blob: 047b908bc1f8215b83f879e562c8f97dde3105de [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{111: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 r=n(3),l=n(7),a=(n(0),n(144)),i={title:"Model Client"},o={unversionedId:"userDocs/submarine-sdk/model-client",id:"userDocs/submarine-sdk/model-client",isDocsHomePage:!1,title:"Model Client",description:"\x3c!--",source:"@site/docs/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/docs/userDocs/submarine-sdk/model-client.md",version:"current",sidebar:"docs",previous:{title:"Experiment Client",permalink:"/docs/userDocs/submarine-sdk/experiment-client"},next:{title:"Tracking",permalink:"/docs/userDocs/submarine-sdk/tracking"}},s=[{value:"ModelsClient.start()-&gt;Active Run",id:"modelsclientstart-active-run",children:[]},{value:"ModelsClient.log_param(key, value)-&gt;None",id:"modelsclientlog_paramkey-value-none",children:[]},{value:"ModelsClient.log_params(params)-&gt;None",id:"modelsclientlog_paramsparams-none",children:[]},{value:"ModelsClient.log_metric(self, key, value, step=None)-&gt;None",id:"modelsclientlog_metricself-key-value-stepnone-none",children:[]},{value:"ModelsClient.log_metrics(self, metrics, step=None)-&gt;None",id:"modelsclientlog_metricsself-metrics-stepnone-none",children:[]},{value:"ModelsClient.load_model(self, name, version)-&gt; mlflow.pyfunc.PyFuncModel",id:"modelsclientload_modelself-name-version--mlflowpyfuncpyfuncmodel",children:[]},{value:"ModelsClient.update_model(self, name, new_name)-&gt;None",id:"modelsclientupdate_modelself-name-new_name-none",children:[]},{value:"ModelsClient.delete_model(self, name, version)-&gt;None",id:"modelsclientdelete_modelself-name-version-none",children:[]},{value:"ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)",id:"modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone",children:[]}],m={toc:s};function c(e){var t=e.components,n=Object(l.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("p",null,"The submarine ModelsClient provides a high-level API for managing and serving your models."),Object(a.b)("h2",{id:"modelsclientstart-active-run"},"ModelsClient.start()->",Object(a.b)("a",{parentName:"h2",href:"https://mlflow.org/docs/latest/_modules/mlflow/tracking/fluent.html#ActiveRun"},"Active Run")),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Start a new Mlflow run"),Object(a.b)("li",{parentName:"ol"},'Direct the logging of the artifacts and metadata to the Run named "worker_i" under Experiment "job_id"'),Object(a.b)("li",{parentName:"ol"},"If in distributed training, worker and job id would be parsed from environment variable"),Object(a.b)("li",{parentName:"ol"},"If in local traning, worker and job id will be generated.\n:return: Active Run")),Object(a.b)("h2",{id:"modelsclientlog_paramkey-value-none"},"ModelsClient.log_param(key, value)->None"),Object(a.b)("p",null,"Log parameter under the current run."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"key")," \u2013 Parameter name (string)"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"value")," \u2013 Parameter value (string, but will be string-ified if not)"))),Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"example"},"example"))),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'from submarine import ModelsClient\n\nperiscope = ModelsClient()\nwith periscope.start() as run:\n periscope.log_param("learning_rate", 0.01)\n')),Object(a.b)("h2",{id:"modelsclientlog_paramsparams-none"},"ModelsClient.log_params(params)->None"),Object(a.b)("p",null,"Log a batch of params for the current run."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-1"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"params")," \u2013 Dictionary of param_name: String -> value: (String, but will be string-ified if not)"))),Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"example-1"},"example"))),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'from submarine import ModelsClient\n\nparams = {"learning_rate": 0.01, "n_estimators": 10}\n\nperiscope = ModelsClient()\nwith periscope.start() as run:\n periscope.log_params(params)\n')),Object(a.b)("h2",{id:"modelsclientlog_metricself-key-value-stepnone-none"},"ModelsClient.log_metric(self, key, value, step=None)->None"),Object(a.b)("p",null,"Log a metric under the current run."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-2"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"key")," \u2013 Metric name (string)."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"value")," \u2013 Metric value (float). Note that some special values such as +/- Infinity may be replaced by other values depending on the store. For example, the SQLAlchemy store replaces +/- Infinity with max / min float values."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"step")," \u2013 Metric step (int). Defaults to zero if unspecified."))),Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"example-2"},"example"))),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'from submarine import ModelsClient\n\nperiscope = ModelsClient()\nwith periscope.start() as run:\n periscope.log_metric("mse", 2500.00)\n')),Object(a.b)("h2",{id:"modelsclientlog_metricsself-metrics-stepnone-none"},"ModelsClient.log_metrics(self, metrics, step=None)->None"),Object(a.b)("p",null,"Log multiple metrics for the current run."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-3"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"metrics")," \u2013 Dictionary of metric_name: String -> value: Float. Note that some special values such as +/- Infinity may be replaced by other values depending on the store. For example, sql based store may replace +/- Infinity with max / min float values."),Object(a.b)("li",{parentName:"ul"},Object(a.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(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"example-3"},"example"))),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'from submarine import ModelsClient\n\nmetrics = {"mse": 2500.00, "rmse": 50.00}\n\nperiscope = ModelsClient()\nwith periscope.start() as run:\n periscope.log_metrics(metrics)\n')),Object(a.b)("h2",{id:"modelsclientload_modelself-name-version--mlflowpyfuncpyfuncmodel"},"ModelsClient.load_model(self, name, version)->",Object(a.b)("a",{parentName:"h2",href:"https://mlflow.org/docs/latest/_modules/mlflow/pyfunc.html#PyFuncModel"}," mlflow.pyfunc.PyFuncModel")),Object(a.b)("p",null,"Load a model stored in models Python function format with specific name and version."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-4"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"name")," \u2013 Name of the containing registered model.(string)."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"version")," \u2013 Version number of the model version.(string).")))),Object(a.b)("h2",{id:"modelsclientupdate_modelself-name-new_name-none"},"ModelsClient.update_model(self, name, new_name)->None"),Object(a.b)("p",null,"Update registered model name."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-5"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"name")," \u2013 Name of the registered model to update(string)."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"new name")," \u2013 New proposed name for the registered model(string).")))),Object(a.b)("h2",{id:"modelsclientdelete_modelself-name-version-none"},"ModelsClient.delete_model(self, name, version)->None"),Object(a.b)("p",null,"Delete model version in backend."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-6"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"name")," \u2013 Name of the containing registered model.(string)."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"version")," \u2013 Version number of the model version.(string).")))),Object(a.b)("h2",{id:"modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone"},"ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)"),Object(a.b)("p",null,"Beta: Save model to server for managment and servering."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("h3",{parentName:"li",id:"parameters-7"},"Parameters"),Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"name")," \u2013 Name of the containing registered model.(string)."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"version")," \u2013 Version number of the model version.(string).")))))}c.isMDXComponent=!0},144:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return u}));var r=n(0),l=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 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){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,l=function(e,t){if(null==e)return{};var n,r,l={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(l[n]=e[n]);return l}(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)&&(l[n]=e[n])}return l}var m=l.a.createContext({}),c=function(e){var t=l.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},b=function(e){var t=c(e.components);return l.a.createElement(m.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return l.a.createElement(l.a.Fragment,{},t)}},d=l.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),b=c(n),d=r,u=b["".concat(i,".").concat(d)]||b[d]||p[d]||a;return n?l.a.createElement(u,o(o({ref:t},m),{},{components:n})):l.a.createElement(u,o({ref:t},m))}));function u(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 o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:r,i[1]=o;for(var m=2;m<a;m++)i[m]=n[m];return l.a.createElement.apply(null,i)}return l.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);