mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-16 01:06:56 +08:00
more detailed docs for workflow (#639)
* more detailed docs for workflow * add more detailed docs for workflow
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from typing import Text, Optional
|
from typing import Any, Dict, Text, Optional
|
||||||
from .expm import ExpManager
|
from .expm import ExpManager
|
||||||
from .exp import Experiment
|
from .exp import Experiment
|
||||||
from .recorder import Recorder
|
from .recorder import Recorder
|
||||||
@@ -380,11 +380,11 @@ class QlibRecorder:
|
|||||||
.. code-block:: Python
|
.. code-block:: Python
|
||||||
|
|
||||||
# Case 1
|
# Case 1
|
||||||
with R.start('test'):
|
with R.start(experiment_name='test'):
|
||||||
recorder = R.get_recorder()
|
recorder = R.get_recorder()
|
||||||
|
|
||||||
# Case 2
|
# Case 2
|
||||||
with R.start('test'):
|
with R.start(experiment_name='test'):
|
||||||
recorder = R.get_recorder(recorder_id='2e7a4efd66574fa49039e00ffaefa99d')
|
recorder = R.get_recorder(recorder_id='2e7a4efd66574fa49039e00ffaefa99d')
|
||||||
|
|
||||||
# Case 3
|
# Case 3
|
||||||
@@ -433,12 +433,18 @@ class QlibRecorder:
|
|||||||
"""
|
"""
|
||||||
self.get_exp().delete_recorder(recorder_id, recorder_name)
|
self.get_exp().delete_recorder(recorder_id, recorder_name)
|
||||||
|
|
||||||
def save_objects(self, local_path=None, artifact_path=None, **kwargs):
|
def save_objects(self, local_path=None, artifact_path=None, **kwargs: Dict[Text, Any]):
|
||||||
"""
|
"""
|
||||||
Method for saving objects as artifacts in the experiment to the uri. It supports either saving
|
Method for saving objects as artifacts in the experiment to the uri. It supports either saving
|
||||||
from a local file/directory, or directly saving objects. User can use valid python's keywords arguments
|
from a local file/directory, or directly saving objects. User can use valid python's keywords arguments
|
||||||
to specify the object to be saved as well as its name (name: value).
|
to specify the object to be saved as well as its name (name: value).
|
||||||
|
|
||||||
|
In summary, this API is designs for saving **objects** to **the experiments management backend path**,
|
||||||
|
1. Qlib provide two methods to specify **objects**
|
||||||
|
- Passing in the object directly by passing with `**kwargs` (e.g. R.save_objects(trained_model=model))
|
||||||
|
- Passing in the local path to the object, i.e. `local_path` parameter.
|
||||||
|
2. `artifact_path` represents the **the experiments management backend path**
|
||||||
|
|
||||||
- If `active recorder` exists: it will save the objects through the active recorder.
|
- If `active recorder` exists: it will save the objects through the active recorder.
|
||||||
- If `active recorder` not exists: the system will create a default experiment, and a new recorder and save objects under it.
|
- If `active recorder` not exists: the system will create a default experiment, and a new recorder and save objects under it.
|
||||||
|
|
||||||
@@ -451,13 +457,20 @@ class QlibRecorder:
|
|||||||
.. code-block:: Python
|
.. code-block:: Python
|
||||||
|
|
||||||
# Case 1
|
# Case 1
|
||||||
with R.start('test'):
|
with R.start(experiment_name='test'):
|
||||||
pred = model.predict(dataset)
|
pred = model.predict(dataset)
|
||||||
R.save_objects(**{"pred.pkl": pred}, artifact_path='prediction')
|
R.save_objects(**{"pred.pkl": pred}, artifact_path='prediction')
|
||||||
|
rid = R.get_recorder().id
|
||||||
|
...
|
||||||
|
R.get_recorder(recorder_id=rid).load_object("prediction/pred.pkl") # after saving objects, you can load the previous object with this api
|
||||||
|
|
||||||
# Case 2
|
# Case 2
|
||||||
with R.start('test'):
|
with R.start(experiment_name='test'):
|
||||||
R.save_objects(local_path='results/pred.pkl')
|
R.save_objects(local_path='results/pred.pkl', artifact_path="prediction")
|
||||||
|
rid = R.get_recorder().id
|
||||||
|
...
|
||||||
|
R.get_recorder(recorder_id=rid).load_object("prediction/pred.pkl") # after saving objects, you can load the previous object with this api
|
||||||
|
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
@@ -465,7 +478,14 @@ class QlibRecorder:
|
|||||||
if provided, them save the file or directory to the artifact URI.
|
if provided, them save the file or directory to the artifact URI.
|
||||||
artifact_path : str
|
artifact_path : str
|
||||||
the relative path for the artifact to be stored in the URI.
|
the relative path for the artifact to be stored in the URI.
|
||||||
|
**kwargs: Dict[Text, Any]
|
||||||
|
the object to be saved.
|
||||||
|
For example, `{"pred.pkl": pred}`
|
||||||
"""
|
"""
|
||||||
|
if local_path is not None and len(kwargs) > 0:
|
||||||
|
raise ValueError(
|
||||||
|
"You can choose only one of `local_path`(save the files in a path) or `kwargs`(pass in the objects directly)"
|
||||||
|
)
|
||||||
self.get_exp().get_recorder().save_objects(local_path, artifact_path, **kwargs)
|
self.get_exp().get_recorder().save_objects(local_path, artifact_path, **kwargs)
|
||||||
|
|
||||||
def load_object(self, name: Text):
|
def load_object(self, name: Text):
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ class Recorder:
|
|||||||
Save objects such as prediction file or model checkpoints to the artifact URI. User
|
Save objects such as prediction file or model checkpoints to the artifact URI. User
|
||||||
can save object through keywords arguments (name:value).
|
can save object through keywords arguments (name:value).
|
||||||
|
|
||||||
|
Please refer to the docs of qlib.workflow:R.save_objects
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
local_path : str
|
local_path : str
|
||||||
|
|||||||
Reference in New Issue
Block a user