Skip to content

Commit

Permalink
Merge pull request #3 from sergey-serebryakov/david/cli_mount
Browse files Browse the repository at this point in the history
Resolving merge conflicts and updating unit tests.
  • Loading branch information
davidjurado authored Aug 14, 2023
2 parents 8a43955 + a1e6dbb commit af5ab44
Show file tree
Hide file tree
Showing 58 changed files with 2,585 additions and 891 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,6 @@ More Information on python-publish action & Repository Dispatch action can be fo
### Secrets used
| Name | |
|---|---|
|PYPI_USER |pypi login credentials used in GitHub workflows |
|PYPI_PASSWORD |pypi login credentials used in GitHub workflows |
|PYPI_USER (depreciated) |pypi login credentials used in GitHub workflows |
|PYPI_PASSWORD (depreciated) |pypi login credentials used in GitHub workflows |
|MLCOMMONS_REPO_ACCESS |public_repo ACL for request dispatch in GitHub workflows |
2 changes: 2 additions & 0 deletions .github/workflows/docs-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
- '.github/workflows/docs-site.yml'
- 'docs/**'
- 'mkdocs.yml'
- 'mlcube/mlcube/__main__.py'
- 'mlcube/mlcube/cli.py'

jobs:
docs:
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ on:
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -27,12 +29,10 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: mlcube/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: mlcube/dist/
repository-url: https://upload.pypi.org/legacy/
verbose: true
env:
LOGLEVEL: DEBUG
Expand All @@ -42,7 +42,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v1
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.MLCOMMONS_REPO_ACCESS }}
repository: mlcommons/mlcube
Expand Down
96 changes: 48 additions & 48 deletions .github/workflows/runner-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ on:
jobs:
ssh_deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -27,21 +29,21 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: runners/mlcube_ssh/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: runners/mlcube_ssh/dist/
repository-url: https://upload.pypi.org/legacy/
env:
LOGLEVEL: DEBUG

docker_deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -55,22 +57,22 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: runners/mlcube_docker/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: runners/mlcube_docker/dist/
repository-url: https://upload.pypi.org/legacy/
verbose: true
env:
LOGLEVEL: DEBUG

singularity_deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -84,22 +86,22 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: runners/mlcube_singularity/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: runners/mlcube_singularity/dist/
repository-url: https://upload.pypi.org/legacy/
verbose: true
env:
LOGLEVEL: DEBUG

kubernetes_runner_deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -113,22 +115,22 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: runners/mlcube_k8s/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: runners/mlcube_k8s/dist/
repository-url: https://upload.pypi.org/legacy/
verbose: true
env:
LOGLEVEL: DEBUG

gcp_runner_deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -142,22 +144,22 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: runners/mlcube_gcp/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: runners/mlcube_gcp/dist/
repository-url: https://upload.pypi.org/legacy/
verbose: true
env:
LOGLEVEL: DEBUG

kubeflow_runner_deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
Expand All @@ -171,12 +173,10 @@ jobs:
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ secrets.PYPI_USER }}
verify_metadata: true
skip_existing: true
password: ${{ secrets.PYPI_PASSWORD }}
packages_dir: runners/mlcube_kubeflow/dist/
repository_url: https://upload.pypi.org/legacy/
verify-metadata: true
skip-existing: true
packages-dir: runners/mlcube_kubeflow/dist/
repository-url: https://upload.pypi.org/legacy/
verbose: true
env:
LOGLEVEL: DEBUG
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# MLCube
# MLCube

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

[![PyPI MLCube](https://img.shields.io/pypi/v/mlcube.svg?label="pypi%20(MLCube)")](https://pypi.org/project/mlcube)
[![PyPI MLCube Docker Runner](https://img.shields.io/pypi/v/mlcube-docker.svg?label="pypi%20(Docker%20Runner)")](https://pypi.org/project/mlcube-docker)
[![PyPI MLCube Singularity Runner](https://img.shields.io/pypi/v/mlcube-singularity.svg?label="pypi%20(Singularity%20Runner)")](https://pypi.org/project/mlcube-singularity)

MLCube brings the concept of interchangeable parts to the world of machine learning models. It is the shipping container that enables researchers and developers to easily share the software that powers machine learning.
MLCube® brings the concept of interchangeable parts to the world of machine learning models. It is the shipping container that enables researchers and developers to easily share the software that powers machine learning.

MLCube is a set of common conventions for creating ML software that can just "plug-and-play" on many systems. MLCube makes it easier for researchers to share innovative ML models, for a developer to experiment with many models, and for software companies to create infrastructure for models. It creates opportunities by putting ML in the hands of more people.

MLCube isn’t a new framework or service; MLCube is a consistent interface to machine learning models in containers like Docker. Models published with the MLCube interface can be run on local machines, on a variety of major clouds, or in Kubernetes clusters - all using the same code. MLCommons provides open source “runners” for each of these environments that make training a model in an MLCube a single command.
MLCube isn’t a new framework or service; MLCube is a consistent interface to machine learning models in containers like Docker. Models published with the MLCube interface can be run on local machines, on a variety of major clouds, or in Kubernetes clusters - all using the same code. MLCommons provides open source “runners” for each of these environments that make training a model in an MLCube a single command.

*Note: This project is still in the very early stages and under active development, some parts may have unexpected/inconsistent behaviours.*

Expand All @@ -37,7 +37,7 @@ Check out the [examples](https://github.com/mlcommons/mlcube_examples) for detai

See [LICENSE](https://github.com/mlcommons/mlcube/blob/master/LICENSE.md) for more information.

MLCube is a trademark of the MLCommons Association.
MLCube is a trademark of the MLCommons® Association.

## Support

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/concepts.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# MLCube concepts

### Command Line Arguments
MLCube runtime and MLCube runners accept multiple command line arguments. They can be classified into two categories:
MLCube® runtime and MLCube runners accept multiple command line arguments. They can be classified into two categories:

- Fixed command-specific parameters such as `--mlcube`, `--platform` and `--task` for the MLCube's `run` command, or
`create_platform` and `rename_platform` for the `config` command.
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/hello-world.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Hello World
Hello World MLCube is an example of a Docker-based MLCube.
Hello World MLCube® is an example of a Docker-based MLCube.


## QuickStart
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Installation

Here is the step-by-step guide to install MLCube library and run simple MLCube cubes.
Here is the step-by-step guide to install MLCube® library and run simple MLCube cubes.

## Create a python environment

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/mlcube-configuration.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MLCube Configuration

MLCube configuration provides information about MLCube's authors, requirements and
MLCube® configuration provides information about MLCube's authors, requirements and
[tasks](https://mlcommons.github.io/mlcube/getting-started/concepts/#task). This is example configuration for
the [MNIST MLCube](https://github.com/mlcommons/mlcube_examples/tree/master/mnist):

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/mnist.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MNIST
The [MNIST dataset](http://yann.lecun.com/exdb/mnist/) is a collection of 60,000 handwritten digits widely used for
training statistical, Machine Learning (ML) and Deep Learning (DL) models. The MNIST MLCube example demonstrates
training statistical, Machine Learning (ML) and Deep Learning (DL) models. The MNIST MLCube® example demonstrates
how data scientists, ML and DL researchers and developers can distribute their ML projects (including training,
validation and inference code) as MLCube cubes. MLCube establishes a standard to package user workloads,
and provides unified command line interface. In addition, MLCube provides a number of reference
Expand Down
6 changes: 3 additions & 3 deletions docs/getting-started/system-settings.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# MLCube System Settings
MLCube system settings configure MLCube and MLCube runners at a system level. The term `system level` here implies that
these settings are not tied to particular MLCubes (MLCube compliant ML projects). Instead, these settings are used by
MLCube runners on every machine where MLCube runtime is configured to use these settings.
MLCube® system settings configure MLCube and MLCube runners at a system level. The term `system level` here implies
that these settings are not tied to particular MLCubes (MLCube compliant ML projects). Instead, these settings are used
by MLCube runners on every machine where MLCube runtime is configured to use these settings.

## Introduction
When MLCube runners run MLCubes, they need to know not only the content of MLCubes (tasks that MLCubes provide), but
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MLCube

MLCube is a project that reduces friction for machine learning by ensuring that models are easily portable and
MLCube® is a project that reduces friction for machine learning by ensuring that models are easily portable and
reproducible, e.g., between different stacks such as different clouds, between cloud and on-prem, etc.

Interested in getting started with MLCube? Follow the
Expand Down
6 changes: 5 additions & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
mkdocs>=1.0.4

# This slightly updated version respects Click's help feature to skip everything that comes after the \f symbol.
# mkdocs-click
mkdocs-click @ git+https://github.com/sergey-serebryakov/mkdocs-click@feature/respect-ff-escape-char

mkdocs-material>=4.4.0
mkdocs-click
pymdown-extensions>=7.1
-r ../mlcube/requirements.txt
2 changes: 1 addition & 1 deletion docs/runners/docker-runner.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Docker Runner
Docker runner uses docker/nvidia-docker/podman to run MLCube cubes. It supports two mandatory commands - `configure` and
Docker runner uses docker/nvidia-docker/podman to run MLCube® cubes. It supports two mandatory commands - `configure` and
`run` with standard arguments - `mlcube`, `platform` and `task`. Users can configure docker runner in MLCube
configuration file, system setting file, and override parameters on a command line.

Expand Down
2 changes: 1 addition & 1 deletion docs/runners/gcp-runner.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Google Compute Platform (GCP) Runner

!!! attention
MLCube is under active development. Allocating and using instances in clouds are associated with costs. Users of
MLCube® is under active development. Allocating and using instances in clouds are associated with costs. Users of
GCP runners should be aware about it, especially, taking into account capability of GCP runners to automatically
create and start remote instances. GCP RUNNERS in current implementation DO NOT stop/destroy remote instances.
Users are encouraged to visit web consoles to identify what virtual instances exist and run.
Expand Down
2 changes: 1 addition & 1 deletion docs/runners/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Runners
MLCube runners run MLCube cubes on one or multiple platforms. Examples of platforms are Docker and Singularity
MLCube® runners run MLCube cubes on one or multiple platforms. Examples of platforms are Docker and Singularity
containers, Kubernetes, remote hosts, virtual machines in the cloud, etc. Every runner has a fixed set of configuration
parameters that users can change to configure MLCubes and runners for their environments. Concretely, runners can take
information from three different sources:
Expand Down
2 changes: 1 addition & 1 deletion docs/runners/kubeflow.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Kubeflow Runner

!!! warning
Work in progress. Some functionality described below may not be available.
MLCube® Kubeflow runner is work in progress. Some functionality described below may not be available.

Kubeflow supports two mandatory commands - `configure` and `run` with standard arguments - `mlcube`, `platform` and
`task`. Users can configure SSH runner in system setting file, and override parameters on a command line.
Expand Down
2 changes: 1 addition & 1 deletion docs/runners/kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
!!! warning
Work in progress. Some functionality described below may not be available.

The Kubernetes Runner runs a MLCube on a Kubernetes cluster.
The Kubernetes Runner runs a MLCube® on a Kubernetes cluster.

## Why Kubernetes?

Expand Down
2 changes: 1 addition & 1 deletion docs/runners/singularity-runner.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Singularity Runner
Singularity runner uses singularity to run MLCube cubes. It supports two mandatory commands - `configure` and
Singularity runner uses singularity to run MLCube® cubes. It supports two mandatory commands - `configure` and
`run` with standard arguments - `mlcube`, `platform` and `task`. Users can configure Singularity runner in MLCube
configuration file, system setting file, and override parameters on a command line.

Expand Down
Loading

0 comments on commit af5ab44

Please sign in to comment.