开源软件名称(OpenSource Name):apache/submarine开源软件地址(OpenSource Url):https://github.com/apache/submarine开源编程语言(OpenSource Language):Java 62.2%开源软件介绍(OpenSource Introduction):What is Apache Submarine?Apache Submarine (Submarine for short) is an End-to-End Machine Learning Platform to allow data scientists to create end-to-end machine learning workflows. On Submarine, data scientists can finish each stage in the ML model lifecycle, including data exploration, data pipeline creation, model training, serving, and monitoring. Why Submarine?Some open-source and commercial projects are trying to build an end-to-end ML platform. What's the vision of Submarine? Problems
Theodore Levitt once said:
Goals of SubmarineModel Training (Experiment)
Notebook Service
Model Management (Serving/versioning/monitoring, etc.)
Easy-to-use User InterfaceAs mentioned above, Submarine attempts to provide Data-Scientist-friendly UI to make data scientists have a good user experience. Here're some examples. Example: Submit a distributed Tensorflow experiment via Submarine Python SDKRun a Tensorflow Mnist experiment# New a submarine client of the submarine server
submarine_client = submarine.ExperimentClient(host='http://localhost:8080')
# The experiment's environment, could be Docker image or Conda environment based
environment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0')
# Specify the experiment's name, framework it's using, namespace it will run in,
# the entry point. It can also accept environment variables. etc.
# For PyTorch job, the framework should be 'Pytorch'.
experiment_meta = ExperimentMeta(name='mnist-dist',
namespace='default',
framework='Tensorflow',
cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100')
# 1 PS task of 2 cpu, 1GB
ps_spec = ExperimentTaskSpec(resources='cpu=2,memory=1024M',
replicas=1)
# 1 Worker task
worker_spec = ExperimentTaskSpec(resources='cpu=2,memory=1024M',
replicas=1)
# Wrap up the meta, environment and task specs into an experiment.
# For PyTorch job, the specs would be "Master" and "Worker".
experiment_spec = ExperimentSpec(meta=experiment_meta,
environment=environment,
spec={'Ps':ps_spec, 'Worker': worker_spec})
# Submit the experiment to submarine server
experiment = submarine_client.create_experiment(experiment_spec=experiment_spec)
# Get the experiment ID
id = experiment['experimentId'] Query a specific experimentsubmarine_client.get_experiment(id) Wait for finishsubmarine_client.wait_for_finish(id) Get the experiment's logsubmarine_client.get_log(id) Get all running experimentsubmarine_client.list_experiments(status='running') For a quick-start, see Submarine On K8s Example: Submit a pre-defined experiment template jobExample: Submit an experiment via Submarine UI(Available on 0.5.0, see Roadmap) Architecture, Design and requirementsIf you want to know more about Submarine's architecture, components, requirements and design doc, they can be found on Architecture-and-requirement Detailed design documentation, implementation notes can be found at: Implementation notes Apache Submarine CommunityRead the Apache Submarine Community Guide How to contribute Contributing Guide Login Submarine slack channel: https://join.slack.com/t/asf-submarine/shared_invite Issue Tracking: https://issues.apache.org/jira/projects/SUBMARINE User DocumentDeveloper DocumentRoadmapWhat to know more about what's coming for Submarine? Please check the roadmap out: https://cwiki.apache.org/confluence/display/SUBMARINE/Roadmap ChangelogFrom here, you can know the changelog and the issue tracker of different version of Apache Submarine. ResourcesApache submarine: a unified machine learning platform made simple at EuroMLSys '22 LicenseThe Apache Submarine project is licensed under the Apache 2.0 License. See the LICENSE file for details. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论