"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8544],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return p}});var o=n(7294);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 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 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){r(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 l(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 s=o.createContext({}),d=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=d(n),p=r,g=u["".concat(s,".").concat(p)]||u[p]||m[p]||a;return n?o.createElement(g,i(i({ref:t},c),{},{components:n})):o.createElement(g,i({ref:t},c))}));function p(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=u;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,i[1]=l;for(var d=2;d<a;d++)i[d]=n[d];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}u.displayName="MDXCreateElement"},2039:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return p},frontMatter:function(){return l},metadata:function(){return d},toc:function(){return m}});var o=n(7462),r=n(3366),a=(n(7294),n(3905)),i=["components"],l={title:"Storage Implementation"},s=void 0,d={unversionedId:"designDocs/storage-implementation",id:"version-0.6.0/designDocs/storage-implementation",title:"Storage Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",sourceDirName:"designDocs",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",tags:[],version:"0.6.0",frontMatter:{title:"Storage Implementation"},sidebar:"docs",previous:{title:"Notebook Implementation",permalink:"/docs/designDocs/notebook-implementation"},next:{title:"Submarine Server Implementation",permalink:"/docs/designDocs/submarine-server/architecture"}},c={},m=[{value:"ML-related objects and their storages",id:"ml-related-objects-and-their-storages",level:2},{value:"Implementation considerations for ML-related objects",id:"implementation-considerations-for-ml-related-objects",level:3},{value:"Detailed discussions",id:"detailed-discussions",level:3},{value:"Store code for experiment/notebook/model-serving",id:"store-code-for-experimentnotebookmodel-serving",level:4},{value:"Localization of experiment/notebook/model-serving code",id:"localization-of-experimentnotebookmodel-serving-code",level:4},{value:"System-related metrics/logs and their storages",id:"system-related-metricslogs-and-their-storages",level:2},{value:"Attachable Volumes",id:"attachable-volumes",level:2},{value:"In-scope / Out-of-scope",id:"in-scope--out-of-scope",level:2}],u={toc:m};function p(e){var t=e.components,n=(0,r.Z)(e,i);return(0,a.kt)("wrapper",(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"ml-related-objects-and-their-storages"},"ML-related objects and their storages"),(0,a.kt)("p",null,"First let's look at what user will interact for most of the time: "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Notebook "),(0,a.kt)("li",{parentName:"ul"},"Experiment"),(0,a.kt)("li",{parentName:"ul"},"Model Servings")),(0,a.kt)("pre",null,(0,a.kt)("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")),(0,a.kt)("p",null,"First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Logs for these tasks for troubleshooting. "),(0,a.kt)("li",{parentName:"ul"},"ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. "),(0,a.kt)("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. "))),(0,a.kt)("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. "),(0,a.kt)("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."),(0,a.kt)("li",{parentName:"ul"},"We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings."),(0,a.kt)("li",{parentName:"ul"},"And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).")),(0,a.kt)("h3",{id:"implementation-considerations-for-ml-related-objects"},"Implementation considerations for ML-related objects"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Object Type"),(0,a.kt)("th",{parentName:"tr",align:null},"Characteristics"),(0,a.kt)("th",{parentName:"tr",align:null},"Where to store"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Metrics: tf.events"),(0,a.kt)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),(0,a.kt)("td",{parentName:"tr",align:null},"Local/EBS, HDFS, Cloud Blob Storage")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Metrics: other tracking metrics"),(0,a.kt)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),(0,a.kt)("td",{parentName:"tr",align:null},"Local, HDFS, Cloud Blob Storage, Database")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Logs"),(0,a.kt)("td",{parentName:"tr",align:null},"Large volumes, #files are potentially huge."),(0,a.kt)("td",{parentName:"tr",align:null},"Local (temporary), HDFS (need aggregation), Cloud Blob Storage")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Submarine Metastore"),(0,a.kt)("td",{parentName:"tr",align:null},"CRUD operations for small meta data."),(0,a.kt)("td",{parentName:"tr",align:null},"Database")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Model Artifacts"),(0,a.kt)("td",{parentName:"tr",align:null},"Size varies for model (from KBs to GBs). #files are potentially huge."),(0,a.kt)("td",{parentName:"tr",align:null},"HDFS, Cloud Blob Storage")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Code"),(0,a.kt)("td",{parentName:"tr",align:null},"Need version control. (Please find detailed discussions below for code storage and localization)"),(0,a.kt)("td",{parentName:"tr",align:null},"Tarball on HDFS/Cloud Blog Storage, or Git")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Environment (Dependencies, Docker Image)"),(0,a.kt)("td",{parentName:"tr",align:null}),(0,a.kt)("td",{parentName:"tr",align:null},"Public/private environment repo (like Conda channel), Docker registry.")))),(0,a.kt)("h3",{id:"detailed-discussions"},"Detailed discussions"),(0,a.kt)("h4",{id:"store-code-for-experimentnotebookmodel-serving"},"Store code for experiment/notebook/model-serving"),(0,a.kt)("p",null,"There're following ways to get experiment code: "),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"1) Code is part of Git repo:")," (",(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},(0,a.kt)("u",null,"Recommended"))),")"),(0,a.kt)("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."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"2) Code is part of Docker image:")," "),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("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."),(0,a.kt)("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)."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"3) Code is part of S3/HDFS/ABFS:")," "),(0,a.kt)("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. "),(0,a.kt)("h4",{id:"localization-of-experimentnotebookmodel-serving-code"},"Localization of experiment/notebook/model-serving code"),(0,a.kt)("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 ",(0,a.kt)("inlineCode",{parentName:"p"},"/code")),(0,a.kt)("p",null,"For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above):"),(0,a.kt)("pre",null,(0,a.kt)("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')),(0,a.kt)("p",null,"After localize, ",(0,a.kt)("inlineCode",{parentName:"p"},"training-job/")," will be placed under ",(0,a.kt)("inlineCode",{parentName:"p"},"/code")," "),(0,a.kt)("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): "),(0,a.kt)("pre",null,(0,a.kt)("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')),(0,a.kt)("p",null,"The above K8s spec create a code-dir and mount it to ",(0,a.kt)("inlineCode",{parentName:"p"},"/code")," to launched containers. The initContainer ",(0,a.kt)("inlineCode",{parentName:"p"},"git-localize")," uses ",(0,a.kt)("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)"),(0,a.kt)("h2",{id:"system-related-metricslogs-and-their-storages"},"System-related metrics/logs and their storages"),(0,a.kt)("p",null,"Other than ML-related objects, we have system-related objects, including: "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Daemon logs (like logs of Submarine server). "),(0,a.kt)("li",{parentName:"ul"},"Logs for other dependency components (like Kubernetes logs when running on K8s). "),(0,a.kt)("li",{parentName:"ul"},"System metrics (Physical resource usages by daemons, launched training containers, etc.). ")),(0,a.kt)("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."),(0,a.kt)("h2",{id:"attachable-volumes"},"Attachable Volumes"),(0,a.kt)("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. "),(0,a.kt)("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. "),(0,a.kt)("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."),(0,a.kt)("h2",{id:"in-scope--out-of-scope"},"In-scope / Out-of-scope"),(0,a.kt)("p",null," Describe what Submarine project should own and what Submarine project should NOT own."))}p.isMDXComponent=!0}}]);