Skip to content
This repository has been archived by the owner on Oct 16, 2024. It is now read-only.

Content for /docs #43

Merged
merged 129 commits into from
May 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
6585bc2
documentation stubs
mike0sv Apr 14, 2022
c879e62
docs structure
mike0sv Apr 21, 2022
45d27ec
Add gatsby-theme-iterative
rogermparent Apr 22, 2022
f7f9e02
Remove preact in favor of React 18
rogermparent Apr 23, 2022
be5a6a4
Apply list-style: none where necessary
rogermparent Apr 25, 2022
e8f6d1f
Fix header by adding a container and bg color
rogermparent Apr 25, 2022
e007489
Move Header and Footer into theme global with containers
rogermparent Apr 26, 2022
14bdc98
Merge branch 'main' of github.com:iterative/mlem.ai into docs-engine
rogermparent Apr 26, 2022
436c3a0
Use old site's custom media config
rogermparent Apr 26, 2022
b6d0c20
Add docs link
rogermparent Apr 26, 2022
6881860
Add header, font, and GH link fixes
rogermparent Apr 26, 2022
13c4708
Upgrade theme package
rogermparent Apr 27, 2022
9dc8af1
Add sidebar stub
rogermparent Apr 27, 2022
fa11158
footer css fix
yathomasi Apr 28, 2022
7588deb
svg fix
yathomasi Apr 28, 2022
9d849e8
tutorial
mike0sv Apr 29, 2022
3ba3813
better sidebar
mike0sv Apr 29, 2022
37bb027
Remove docs content
rogermparent Apr 29, 2022
3c12118
Re-add docs content
rogermparent Apr 29, 2022
b917932
Add spaces inbetween details tags and content
rogermparent Apr 29, 2022
de04871
improving tutorial
mike0sv Apr 29, 2022
d4649e0
some user guidance
mike0sv Apr 30, 2022
5ad0166
more docs
mike0sv Apr 30, 2022
98b1d1f
MLemObject API list
mike0sv Apr 30, 2022
e131bdc
sticky navbar
yathomasi May 2, 2022
4a2ad81
fix some links
mike0sv May 2, 2022
3fe8683
mlem objects and abcs
mike0sv May 3, 2022
d93db74
Merge branch 'docs-engine' of github.com:iterative/mlem.ai into docs-…
rogermparent May 4, 2022
40f197d
Override base.css
rogermparent May 5, 2022
d208f42
Merge branch 'main' of github.com:iterative/mlem.ai into docs-engine
rogermparent May 5, 2022
122b46f
Merge branch 'docs-engine' of github.com:iterative/mlem.ai into docs-…
rogermparent May 5, 2022
cb66733
add analytics
aguschin May 5, 2022
c7a6d99
Use dvc.org link for discord
rogermparent May 5, 2022
3080ecd
Fix padding even more
rogermparent May 5, 2022
08d2c5e
fixing typos
aguschin May 6, 2022
ee1f253
more Use Cases
aguschin May 8, 2022
70119f2
format markdown files
aguschin May 8, 2022
9869cdc
commit wrongly formatted markdown
aguschin May 9, 2022
21979f7
refactor tutorial
mike0sv May 9, 2022
1443e3d
refactor tutorial
mike0sv May 9, 2022
f8daae4
Override RightPanel with new discord link
rogermparent May 9, 2022
9bc1e2c
MLEM def - extract MR stuff. Rename 'start' -> 'get-started' for nami…
omesser May 12, 2022
f69abc2
Fix broken link
omesser May 12, 2022
7d398b7
Some get-started/index rephrases
omesser May 12, 2022
8fdee21
CR fix - reword in header/index.tsx
omesser May 12, 2022
b1308c1
Override docs layout with a version that doesn't have search
rogermparent May 12, 2022
fd51131
Upgrade packages
rogermparent May 12, 2022
831c310
Merge branch 'docs-engine' into docs-content
rogermparent May 12, 2022
d08e59e
Rework home-slides, add what-is-mlem, make index intro more concise
omesser May 13, 2022
46fc659
install mlem in get-started
omesser May 13, 2022
9299573
typo fix
omesser May 13, 2022
962a470
Merge branch 'main' into docs-engine
rogermparent May 13, 2022
a7fdd10
Run prettier
rogermparent May 13, 2022
110cbaf
Fix ts lint issues in project code
rogermparent May 13, 2022
3ed3a86
no datasets for GS
mike0sv May 17, 2022
1811edc
mark WIP
mike0sv May 17, 2022
02866ec
install: copy edits
jorgeorpinel May 17, 2022
4c4023b
add index.md for CLI and API reference
madhur-tandon May 17, 2022
bb1b45b
start: shorter index intro
jorgeorpinel May 17, 2022
43e7506
add cli docs for init
madhur-tandon May 17, 2022
819600b
add cli docs for mlem list
madhur-tandon May 17, 2022
55859a6
add cli docs for pprint
madhur-tandon May 17, 2022
ba26f71
add cli docs for serve
madhur-tandon May 17, 2022
23367b7
suggested formatting changes
madhur-tandon May 17, 2022
f0b509b
add cli docs for types
madhur-tandon May 18, 2022
551246a
subsume arguments inside synopsis
madhur-tandon May 18, 2022
5ae6d8e
fix arguments for cli types
madhur-tandon May 18, 2022
450cde7
add cli docs for link
madhur-tandon May 18, 2022
e33b054
add cli docs for clone
madhur-tandon May 18, 2022
1346c77
cli docs for create, update serve and types
madhur-tandon May 18, 2022
7ac71e3
cli import docs
madhur-tandon May 18, 2022
83b434b
cli apply docs
madhur-tandon May 18, 2022
bfa9d9e
fix formatting for cli import
madhur-tandon May 18, 2022
a94b446
fix typos and add link for deploy
madhur-tandon May 18, 2022
f010c3f
Make further changes required to make linting pass
rogermparent May 18, 2022
d13ed3f
Fix top margin on footer
rogermparent May 18, 2022
5fe10aa
Merge branch 'main' of github.com:iterative/mlem.ai into docs-engine
rogermparent May 18, 2022
2eae931
Merge branch 'docs-engine' of github.com:iterative/mlem.ai into docs-…
rogermparent May 18, 2022
d78bd59
cli docs for deploy and its subcommands
madhur-tandon May 19, 2022
18bd383
use correct labels for subcommands of deploy in sidebar
madhur-tandon May 19, 2022
810ab3c
cli docs for pack
madhur-tandon May 19, 2022
ad3d579
add cli for apply-remote
madhur-tandon May 19, 2022
7258aad
api docs for init
madhur-tandon May 19, 2022
db7e0ab
api docs for save and load
madhur-tandon May 19, 2022
95a23ef
api docs for load_meta
madhur-tandon May 19, 2022
774d646
Upgrade packages
rogermparent May 19, 2022
444935a
Upgrade packages
rogermparent May 19, 2022
17bd0c8
Add xs-scr media query
rogermparent May 19, 2022
f1331d2
Merge branch 'docs-engine' into docs-content
rogermparent May 19, 2022
1ffb064
Merge branch 'main' of github.com:iterative/mlem.ai into docs-engine
rogermparent May 19, 2022
5b71896
add api docs for ls
madhur-tandon May 19, 2022
09b4335
add model registry use case from dvc.org
aguschin May 20, 2022
ed6164d
fixing folders/path names; fixing api-reference headers
aguschin May 20, 2022
3cca714
run linter
aguschin May 20, 2022
e7fe56c
Add docs page stub
rogermparent May 20, 2022
ea3a92a
Merge branch 'docs-engine' of github.com:iterative/mlem.ai into docs-…
rogermparent May 20, 2022
3125e2c
Fix broken cli-reference links. Remove self referential link from mle…
omesser May 20, 2022
b45684c
running yarn format
omesser May 20, 2022
c5de607
Merge branch 'main' of github.com:iterative/mlem.ai into docs-content
rogermparent May 20, 2022
001a46b
Update src/components/NavBar/OtherToolsPopup/index.tsx
aguschin May 21, 2022
4ec72a2
Command reference pass. Also using mlem for shell blocks where mlem c…
omesser May 22, 2022
91fa7ba
Format & lint
omesser May 22, 2022
f39dde1
copy contributing from dvc.org
aguschin May 22, 2022
2a14a27
yarn run fixes
aguschin May 22, 2022
13bcd12
incorporate feedback; edit mlem+dvc page in UC
aguschin May 22, 2022
dcab49b
add api docs for import_object
madhur-tandon May 23, 2022
620f9e9
add api docs for link
madhur-tandon May 23, 2022
f5abbb2
add api docs for clone
madhur-tandon May 23, 2022
7bd5ed5
api docs for apply
madhur-tandon May 23, 2022
6e123a0
api docs for pack
madhur-tandon May 23, 2022
815e7fb
api docs for serve
madhur-tandon May 23, 2022
1394792
add api docs for apply remote
madhur-tandon May 23, 2022
c6474ad
add description for apply-remote
madhur-tandon May 23, 2022
e6644e7
Replace old separate highlighters with new unified cli highlighter
rogermparent May 23, 2022
4ab62c6
Run prettier
rogermparent May 23, 2022
e3b2ed8
api docs for deploy - TODO for usage and example
madhur-tandon May 23, 2022
5e6dc73
remove empty index files
jorgeorpinel May 24, 2022
4e9c956
remove useless file
jorgeorpinel May 24, 2022
5da57d1
cleanup sidebar.json
jorgeorpinel May 24, 2022
1b70da0
remove some empty content not in nav
jorgeorpinel May 24, 2022
c8c602b
use HTML comments for TODOs
jorgeorpinel May 24, 2022
24742d8
Fix a bunch of typos
jorgeorpinel May 24, 2022
c8776ff
python -> py (md fenced blocks)
jorgeorpinel May 24, 2022
8f4d29c
md fenced block lang. review (`cli` everywhere)
jorgeorpinel May 24, 2022
8b4229e
run Prettier
jorgeorpinel May 24, 2022
0d212a3
ref: remove most notes (md block quotes)
jorgeorpinel May 24, 2022
1aee3c7
updating MLEM+DVC doc
aguschin May 24, 2022
997ea66
Merge branch 'docs-content' of github.com:iterative/mlem.ai into docs…
aguschin May 24, 2022
91a15c3
remove WIP items from sidebar
aguschin May 24, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions content/docs/api-reference/apply.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# mlem.api.apply()

Apply provided model against provided data

```py
def apply(
model: Union[str, MlemModel],
*data: Union[str, MlemDataset, Any],
method: str = None,
output: str = None,
target_repo: str = None,
index: bool = None,
external: bool = None,
batch_size: Optional[int] = None,
) -> Optional[Any]
```

### Usage:

```py
from mlem.api import apply

y_pred = apply("rf", "data", method="predict_proba")
```

## Description

This API is the underlying mechanism for the
[mlem apply](/doc/command-reference/apply) command and facilitates running
inferences on entire datasets. The API applies i.e. calls a model's method (eg:
`predict`) and returns the output (as a MLEM object) while also saving it if
required.

## Parameters

- **`model`** (required) - MLEM model (a MlemModel object).
- **`data`** (required) - Input to the model.
- `method` (optional) - Which model method to use. If None, use the only method
model has. If more than one is available, will fail.
- `output` (optional) - If value is provided, assume its path and save output
there.
- `target_repo` (optional) - The path to repo to save the results to.
- `index` (optional) - Whether to index saved output in MLEM root folder.
- `external` (optional) - Whether to save result outside mlem dir.
- `batch_size` (optional) - If data is to be loaded and applied in batches.

## Exceptions

- `WrongMethodError` - Thrown if wrong method name for model is provided
- `NotImplementedError` - Saving several input data objects is not implemented
yet

## Examples

```py
from numpy import ndarray
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from mlem.core.objects import MlemDataset, MlemModel
from mlem.api import apply

train, target = load_iris(return_X_y=True)
model = DecisionTreeClassifier().fit(train, target)
d = MlemDataset.from_data(train)
m = MlemModel.from_obj(model)
res = apply(m, d, method="predict")
assert isinstance(res, ndarray)
```
67 changes: 67 additions & 0 deletions content/docs/api-reference/apply_remote.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# mlem.api.apply_remote()

Apply deployed model (possibly remote) against provided data.

```py
def apply_remote(
client: Union[str, BaseClient],
*data: Union[str, MlemDataset, Any],
method: str = None,
output: str = None,
target_repo: str = None,
index: bool = False,
**client_kwargs,
) -> Optional[Any]
```

### Usage:

```py
from mlem.api import apply_remote

res = apply_remote(client_obj, data, method="predict")
```

## Description

This API is the underlying mechanism for the
[mlem apply-remote](/doc/command-reference/apply-remote) command and facilitates
running inferences on entire datasets for models which are deployed remotely or
are being served locally. The API requires an explicit client object, which
knows how to make requests to the deployed model.

## Parameters

- **`client`** (required) - The client to access methods of deployed model.
- **`data`** (required) - Input to the model.
- `method` (optional) - Which model method to use. If None, use the only method
model has. If more than one is available, will fail.
- `output` (optional) - If value is provided, assume it's path and save output
there.
- `target_repo` (optional) - The path to repo to save the results to.
- `index` (optional) - Whether to index saved output in MLEM root folder.
- `client_kwargs` (optional) - Keyword arguments for the underlying client
implementation being used.

## Exceptions

- `WrongMethodError` - Thrown if wrong method name for model is provided
- `InvalidArgumentError` - Thrown if arguments are invalid, when method cannot
be None
- `NotImplementedError` - Saving several input data objects is not implemented
yet

## Examples

```py
from numpy import ndarray
from sklearn.datasets import load_iris
from mlem.api import apply_remote
from mlem.runtime.client.base import HTTPClient

train, _ = load_iris(return_X_y=True)
client = HTTPClient(host="0.0.0.0", port=8080)

res = apply_remote(client, train, method="predict")
assert isinstance(res, ndarray)
```
64 changes: 64 additions & 0 deletions content/docs/api-reference/clone.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# mlem.api.clone()

Clones MLEM object from `path` to `target` and returns Python representation for
the created object.

```py
def clone(
path: str,
target: str,
repo: Optional[str] = None,
rev: Optional[str] = None,
fs: Optional[AbstractFileSystem] = None,
target_repo: Optional[str] = None,
target_fs: Optional[str] = None,
follow_links: bool = True,
load_value: bool = False,
index: bool = None,
external: bool = None,
) -> MlemObject
```

### Usage:

```py
from mlem.api import clone

cloned_obj = clone(path="rf", target="mymodel". repo="https://github.com/iterative/example-mlem-get-started", rev="main")
```

## Description

This API is the underlying mechanism for the
[mlem clone](/doc/command-reference/clone) command and facilitates copying of a
[MLEM Object](/doc/user-guide/basic-concepts#mlem-objects) from source to
target.

## Parameters

- **`path`** (required) - Path to the object. Could be local path or path inside
a Git repo.
- **`target`** (required) - Path to save the copy of initial object to.
- `repo` (optional) - URL to repo if object is located there.
- `rev` (optional) - revision, could be Git commit SHA, branch name or tag.
- `fs` (optional) - filesystem to load object from
- `target_repo` (optional) - path to repo to save cloned object to
- `target_fs` (optional) - target filesystem
- `follow_links` (optional) - If object we read is a MLEM link, whether to load
the actual object link points to. Defaults to True.
- `load_value` (optional) - Load actual python object incorporated in MlemMeta
object. Defaults to False.
- `index` (optional) - Whether to index output in .mlem directory
- `external` (optional) - whether to put object inside mlem dir in target repo

## Exceptions

None

## Example: Clone a remote model to a remote repo

```py
from mlem.api import clone

cloned_obj = clone(path="rf", target="mymodel". repo="https://github.com/iterative/example-mlem-get-started", rev="main", target_repo="s3://mybucket/mymodel", load_value=True)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

,

```
58 changes: 58 additions & 0 deletions content/docs/api-reference/deploy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# mlem.api.deploy()

Deploy a model to target environment. Can use existing deployment declaration or
create a new one on-the-fly.

```py
def deploy(
deploy_meta_or_path: Union[MlemDeploy, str],
model: Union[MlemModel, str] = None,
env: Union[MlemEnv, str] = None,
repo: Optional[str] = None,
fs: Optional[AbstractFileSystem] = None,
external: bool = None,
index: bool = None,
**deploy_kwargs,
) -> MlemDeploy
```

### Usage:

```py
from mlem.api import deploy

#TODO
```

## Description

This API is the underlying mechanism for the
[mlem deploy create](/doc/command-reference/deploy/create) command and provides
a programmatic way to create deployments for a target environment.

## Parameters

- **`deploy_meta_or_path`** (required) - Path to deployment meta (will be
created if it does not exist)
- `model` (optional) - Path to model
- `env` (optional) - Path to target environment
- `repo` (optional) - Path to MLEM repo
- `fs` (optional) - filesystem to load deploy meta from. If not provided, will
be inferred from `deploy_meta_or_path`
- `external` (optional) - Save result not in mlem dir, but directly in repo
- `index` (optional) - Whether to index output in .mlem directory
- `deploy_kwargs` (optional) - Configuration for new deployment meta if it does
not exist

## Exceptions

- `MlemObjectNotFound` - Thrown if we can't find MLEM object
- `ValueError` - Please provide model and env args for new deployment

## Examples

```py
from mlem.api import deploy

#TODO
```
79 changes: 79 additions & 0 deletions content/docs/api-reference/import_object.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# mlem.api.import_object()

Try to load an object as MLEM model (or dataset) and return it, optionally
saving to the specified target location.

```py
def import_object(
path: str,
repo: Optional[str] = None,
rev: Optional[str] = None,
fs: Optional[AbstractFileSystem] = None,
target: Optional[str] = None,
target_repo: Optional[str] = None,
target_fs: Optional[AbstractFileSystem] = None,
type_: Optional[str] = None,
copy_data: bool = True,
external: bool = None,
index: bool = None,
)
```

### Usage:

```py
import os
from mlem.api import import_object
from mlem.core.objects import MlemDataset
from mlem.contrib.pandas import DataFrameType

path = os.path.join(os.getcwd(), "data.csv")
target_path = os.path.join(os.getcwd(), "imported_data")
meta = import_object(path, target=target_path, type_="pandas[csv]", copy_data=True)

assert isinstance(meta, MlemDataset)
dt = meta.dataset
assert isinstance(dt, DataFrameType)
```

## Description

Existing datasets and model files are imported as
[MLEM Objects](/doc/user-guide/basic-concepts#mlem-objects). Specifically, they
are tried to be loaded as `MlemModel` or `MlemDataset`. The function also
supports saving these objects for future use within the MLEM context. This API
is the underlying mechanism for the [mlem import](/doc/command-reference/import)
command.

## Parameters

- **`path`** (required) - Path of file to import.
- `repo` (optional) - Path to MLEM repo.
- `rev` (optional) - revision, could be Git commit SHA, branch name or tag.
- `fs` (optional) - FileSystem for the `path` argument
- `target` (optional) - Path to save MLEM object into.
- `target_repo` (optional) - Path to MLEM repo for `target`.
- `target_fs` (optional) - FileSystem for the `target` argument
- `type_` (optional) - Specify how to read file. Available types: ['pickle',
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to mention import modifiers (like pandas[csv]). Maybe not here, but in user guide. But probably on both pages

'pandas']. Defaults to auto-infer.
- `copy_data` (optional) - Whether to create a copy of file in target location
or just link existing file. Defaults to True.
- `external` (optional) - Save result not in `.mlem`, but directly in repo
- `index` (optional) - Whether to index output in `.mlem` directory

## Exceptions

None

## Example: Import a saved model as MlemModel

```py
import os
from mlem.core.objects import MlemModel
from mlem.api import import_object

path = os.path.join(os.getcwd(), "mymodel")
target_path = os.path.join(os.getcwd(), "mlem_model")
meta = import_object(path, target=target_path, type_="pickle", copy_data=True)
assert isinstance(meta, MlemModel)
```
15 changes: 15 additions & 0 deletions content/docs/api-reference/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Python API

MLEM can be used as a python library, simply [install](/doc/install) with `pip`
or `conda`. This reference provides the details about the functions in the API
module `mlem.api`, which can be imported in any regular way, for example:

```py
import mlem.api
```

The purpose of this API is to provide programmatic access to operate on models
and datasets from Python code.

Please choose a function from the navigation sidebar to the left, or click the
`Next` button below to jump into the first one ↘
29 changes: 29 additions & 0 deletions content/docs/api-reference/init.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# mlem.api.init()

Creates `.mlem/` directory in `path`
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to use term "MLEM project" somwhere here.

Also, since a lot of our CLI are just wrappers around API, we should probably use the same descriptions for both.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same goes for their arguments/options (if they are the same of course from cli/api)


```py
def init(path: str = ".") -> None
```

### Usage:

```py
from mlem.api import init

init(path)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add multiple examples with explanations like

init()  # init in current directory
init("s3://bucket")  # init in cloud
etc

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, this looks like examples actually. Let me check dvc docs to see what is the difference

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jorgeorpinel What is the purpose of usage section? We can see signature above and some examples in the end. For DVC python API usage has the same content as one of the examples in most cases

```

## Description

Initializes a MLEM repository by creating a `.mlem/` directory inside the given
path. A new and empty `config.yaml` is also created inside it.

## Parameters

- **`path`** (required) - location of the target where a MLEM repository has to
be initialized i.e. a `.mlem/` folder has to be created. `.` by default

## Exceptions

None
Loading