Persisting Models¶
After you got yourself a Model
instance,
you can persist it to a repository. For that, you need a
Task
instance to add model to.
Task
is a container for models trained for
the same problem. For example, if you did some experiments, you’ll push each
experiment as a Model
to the same
Task
.
Each Task
belongs to a
Project
, which is just container for tasks.
To create and persist projects, tasks and models, you need ebonite client, which
is and instance of Ebonite
. Ebonite client is a composition of
two repository implementations: MetadataRepository
and ArtifactRepository
.
MetadataRepository
is where all the metadata goes,
you look at it as a SQL database (we actually have an sql implementation).
ArtifactRepository
is where all model binaries go.
It can be any file storage like s3, ftp and so on.
You can manually create client with Ebonite(metadata_repository, artifact_repository)
,
or use one of the factory methods: local()
for local client
(metadata will just a json file, and artifacts will be just plain files in
local file system), inmemory()
for in-memory repositories.
Also there is a custom_client()
to setup your own repositories.
You can use MetadataRepository.type
value as for metadata argument.
Available implementations:
- local -
LocalMetadataRepository
- sqlalchemy -
SQLAlchemyMetaRepository
You can use ArtifactRepository.type
value as for artifact argument.
Available implementations:
- local -
LocalArtifactRepository
- inmemory -
InMemoryArtifactRepository
- s3 -
S3ArtifactRepository
Let’s create local ebonite client (code):
1 | ebnt = ebonite.Ebonite.local(clear=True)
|
Now, create project and task for our model (code):
1 | # then push it to repositories. this will create .ebonite dir with metadata.json and artifacts dir
|
And push model into it (code):
1 |
|
Now, if you take a look at .ebonite
directory, you’ll find a
metadata.json
file with your project, task and model.
Congratulations, you persisted your model. This process is absolutely the same if you choose other repository implementations. Take a look at examples/remote_example for an example with remote repositories.