<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Apache Submarine on Medium]]></title>
        <description><![CDATA[Stories by Apache Submarine on Medium]]></description>
        <link>https://medium.com/@apache.submarine?source=rss-8d1698670629------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*zzcSjwgIE7Nz6tAg.jpg</url>
            <title>Stories by Apache Submarine on Medium</title>
            <link>https://medium.com/@apache.submarine?source=rss-8d1698670629------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 13 Apr 2026 20:31:15 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@apache.submarine/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Apache Submarine 0.4.0 Release: What’s new and coming?]]></title>
            <link>https://medium.com/@apache.submarine/apache-submarine-0-4-0-release-whats-new-and-coming-fa14b4ed8aec?source=rss-8d1698670629------2</link>
            <guid isPermaLink="false">https://medium.com/p/fa14b4ed8aec</guid>
            <category><![CDATA[apache-submarine]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[deep-learning]]></category>
            <category><![CDATA[submarine]]></category>
            <dc:creator><![CDATA[Apache Submarine]]></dc:creator>
            <pubDate>Mon, 06 Jul 2020 23:51:00 GMT</pubDate>
            <atom:updated>2020-07-06T23:51:00.159Z</atom:updated>
            <content:encoded><![CDATA[<p><em>This blogpost is co-authored by </em><strong><em>Wangda Tan</em></strong><em>, </em><strong><em>Wanqiang Ji</em></strong><em>, </em><strong><em>Zhankun Tang</em></strong><em>, </em><strong><em>Kevin Su</em></strong><em>.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*06YCPe2WDprJPl77" /><figcaption>Image courtesy of the NOAA Office of Ocean Exploration and Research, Gulf of Mexico 2018.</figcaption></figure><h3>The vision of Submarine</h3><p>From the <a href="https://github.com/apache/submarine">Submarine Github home page</a>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*L2YuuizjovfoHPyv" /></figure><p><em>Apache Submarine (Submarine for short) is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ONE PLATFORM means it supports Data Scientists to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training (experiments), and push model to production (model serving and monitoring). All these steps can be completed within the ONE PLATFORM.</em></p><p>Comparing to other open-source projects, Submarine is targeted to bring best-of-breed User-Interface (API/SDK/GUI, etc.) to run training workload at scale, repeatable, easy to use which doesn’t require Data-Scientist to understand implementations behind the scene (such as how K8s works).</p><h3>Look back, what we have done</h3><p>Submarine was part of Hadoop subprojects (in parallel with HDFS/YARN/OZone, etc.). It spun off from Hadoop and became an Apache TLP (Top Level Project) in Nov 2019.</p><p>The previous Submarine release is 0.3.0 (<a href="https://submarine.apache.org/releases/submarine-release-0.3.0.html">Release Note</a>) which is released on Feb 2020. Till 0.3.0 release, Submarine is mainly focused on running deep learning and machine learning workload on Apache Hadoop YARN (YARN for short) platform.</p><p>It supports running distributed Tensorflow, PyTorch workloads on YARN together with other batch (like Spark/Tez/Map-Reduce), or streaming (like Flink, etc.) workloads on YARN. Internally, Submarine uses <a href="https://github.com/linkedin/TonY">LinkedIn’s TonY</a> project to run deep-learning applications on YARN.</p><p>By leveraging GPU/Docker support on YARN, Submarine also supports workloads request GPU, and run workloads inside Docker container.</p><h3>What’s new for 0.4.0 — Overview</h3><p>Starting from 0.4.0, we will focus to provide a full training/model-management/notebook experiences for end-users. We will also start to focus on Kubernetes since Kubernetes is becoming another choice to run a machine-learning/AI platform.</p><p>0.4.0 is the first step of our vision of <em>ONE Platform</em>. At a high level, we provide Python SDK and REST APIs in order to allow data scientists to run distributed/standalone Tensorflow/PyTorch training workloads (<em>experiments</em> in Submarine’s term) with a few commands.</p><p>Let’s look at the highlights of the 0.4.0 release.</p><h3>What’s new for 0.4.0 — Highlights</h3><h4>Easy to deploy on Kubernetes</h4><p>Submarine provides a one-click Helm chart for easy installation on K8s. This Helm chart consists of Submarine server, database, and other Submarine dependencies.</p><pre>helm install submarine ./helm-charts/submarine</pre><h4>Submit distributed training experiments to K8s via Python SDK</h4><p>More details please see: <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb">Jupyter example</a></p><pre>submarine_client = submarine.ExperimentClient(host=&#39;<a href="http://submarine:8080&#39;">http://submarine:8080&#39;</a>)</pre><pre>experiment_meta = ExperimentMeta(name=&#39;mnist&#39;,<br>   namespace=&#39;submarine&#39;,<br>   framework=&#39;Tensorflow&#39;,<br>   cmd=&#39;python mnist.py&#39;<br>   &#39; - log_dir=/train/log&#39;,<br>   &#39; - batch_size=150&#39;,<br>   env_vars={&#39;ENV1&#39;: &#39;ENV1&#39;})</pre><pre>worker_spec = ExperimentTaskSpec(resources=&#39;cpu=4,memory=2048M&#39;,<br>   replicas=2)</pre><pre>ps_spec = ExperimentTaskSpec(resources=&#39;cpu=4,memory=2048M&#39;,<br>   replicas=1)</pre><pre>env = Environment(<br>   image=&#39;gcr.io/kubeflow-ci/tf-mnist-with-summaries:1.0&#39;)<br>   experiment_spec = ExperimentSpec(meta=experiment_meta,<br>   environment=env,<br>   spec={&#39;Worker&#39;: worker_spec,<br>         &#39;Ps&#39;: ps_spec})</pre><pre># Submit experiment to K8s <br>submarine_client.create_experiment(experiment_spec=experiment_spec)</pre><pre># Get experiment spec<br>id = experiment[&#39;experimentId&#39;]<br>submarine_client.get_experiment(id)</pre><pre># List all running experiments<br>status = &#39;running&#39;<br>submarine_client.list_experiments(status=status)</pre><pre># Get experiment log<br>submarine_client.get_log(id)<br>Also include how to retrieve logs, status, etc.</pre><h4>Submit distributed training experiments to K8s via REST API</h4><pre>curl -X POST -H “Content-Type: application/json” -d ‘<br>{<br> “meta”: {<br> “name”: “tf-mnist-json”,<br> “namespace”: “default”,<br> “framework”: “TensorFlow”,<br> “cmd”: “python /var/tf_mnist/mnist_with_summaries.py — log_dir=/train/log — learning_rate=0.01 — batch_size=150”,<br> “envVars”: {<br> “ENV_1”: “ENV1”<br> }<br> },<br> “environment”: {<br> “image”: “gcr.io/kubeflow-ci/tf-mnist-with-summaries:1.0”<br> },<br> “spec”: {<br> “Ps”: {<br> “replicas”: 1,<br> “resources”: “cpu=1,memory=512M”<br> },<br> “Worker”: {<br> “replicas”: 1,<br> “resources”: “cpu=1,memory=512M”<br> }<br> }<br>}<br>‘ <a href="http://127.0.0.1:8080/api/v1/experiment">http://127.0.0.1:8080/api/v1/experiment</a></pre><pre># Get experiment spec</pre><pre>curl -X GET <a href="http://127.0.0.1/api/v1/experiment/experiment_1592057447228_0001">http://127.0.0.1/api/v1/experiment/experiment_1592057447228_0001</a></pre><pre># List all running experiments</pre><pre>curl -X GET <a href="http://127.0.0.1:8080/api/v1/experiment?status=running">http://127.0.0.1:8080/api/v1/experiment?status=running</a></pre><pre># Get experiment log</pre><pre>curl -X GET <a href="http://127.0.0.1:8080/api/v1/experiment/logs/experiment_1592057447228_0001">http://127.0.0.1:8080/api/v1/experiment/logs/experiment_1592057447228_0001</a></pre><h3>What’s coming?</h3><p>We’re planning to release the next version v0.5.0 by end of Auguest, 2020, the main features planned for 0.5.0 includes the following (tentative):</p><ul><li>Submarine SDK</li><li>Environment API</li><li>Pre-defined Experiment API to use out-of-box algorithms like deepFM</li><li>Model management API</li><li>Submarine UI</li><li>Integration with Jupyter notebook</li></ul><p>Here’re screenshots for 0.5.0 Submarine experiment management UI:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hlEjTISZSzjvTv747WBk_w.png" /><figcaption>View Submarine Experiment (Training job) details</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PmUNkCN-EnPicPoc4ZLUYg.png" /><figcaption>List Submarine experiments</figcaption></figure><h3>Community</h3><h4>Community Statistics</h4><p>During the 0.4.0 release, we have 34 unique contributors (which is the largest number of contributors for all Submarine releases) that have PR merged or reported JIRAs. And we have a total of 172 JIRAs resolved in community.</p><p>0.4.0 also includes 51,392 lines of code additions and 7,797 lines of deletions.</p><h3>Acknowledgments</h3><p>Thanks all the contributors who have PRs or created JIRAs:</p><p>Eroschang, Huang Ting Yao, Jasoonn, Lleohao, Qin Yao, SegFault6666, andrewhsiehth, arbaobao, cchung100m, chiajou, cku328, danielthank, flirmnave, gumartinm, jason_jane, jiwq, jotjohnting, khchen, khu, kobe860219, liushaohui, liuxun, lowc1012, pingsutw, snemeth, stana, tangzhankun, wangda, weichiu, xzh_dz, yuan_zac, zhulinhao, ztang</p><p>Without all of you, we cannot get the release done!</p><p>Have an interest in joining the Apache Submarine community? Please follow <a href="https://github.com/apache/submarine/blob/master/docs/community/contributing.md">https://github.com/apache/submarine/blob/master/docs/community/contributing.md</a> to become a contributor!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fa14b4ed8aec" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>