model_reference
References to custom models.
Classes
BitfountModelReference
class BitfountModelReference( model_ref: Union[Path, str], datastructure: Optional[DataStructure] = None, model_version: Optional[int] = None, schema: Optional[BitfountSchema] = None, username: Optional[str] = None, hub: Optional[BitfountHub] = None, hyperparameters: Optional[_StrAnyDict] = None, private: bool = False, new_version: bool = False, secrets: Optional[Union[APIKeys, JWT]] = None, weights: Optional[Union[Path, str]] = None,):
Describes a local or remote reference to a BitfountModel
class.
To use another user's custom model, simply provide that user's username instead of
your own (along with the name of the model as the model_ref
argument).
Arguments
datastructure
:DataStructure
to be passed to the model when initialised. This is an optional argument as it is only required forget_model
to perform validation on the model before uploading it to the hub. Ensure that you provide this argument if you want to useget_model
to upload your model.hub
: Required for upload/download of model. This attribute is set after initialisation on the worker side as the hub is not serialized. Defaults to None.hyperparameters
: Hyperparameters to be passed to the model constructor after it has been loaded from file or hub. Defaults to None.model_ref
: Either path to model file or name of model on hub.model_version
: The version of the model you wish to use. Defaults to the latest version.new_version
: Whether to upload a new version of the model to the hub. Defaults to False.private
: Boolean flag to set the model to be private to control useage or publicly accessible to all users.schema
: TheBitfountSchema
object associated with the datasource on which the model will be trained on.secrets
: The secrets to use when creating aBitfountHub
instance. Defaults to None.username
: The username of the model owner. Defaults to bitfount session username if not provided.
Attributes
fields_dict
: A dictionary mapping all attributes that will be serialized in the class to their marshamllow field type. (e.g. fields_dict ={"class_name": fields.Str()}
).nested_fields
: A dictionary mapping all nested attributes to a registry that contains class names mapped to the respective classes. (e.g. nested_fields ={"datastructure": datastructure.registry}
)
Raises
ValueError
: Ifusername
is not provided andhub
is not provided.
Ancestors
- bitfount.models.base_models._BaseModelRegistryMixIn
- bitfount.types._BaseSerializableObjectMixIn
Variables
- static
datastructure : Optional[DataStructure]
- static
fields_dict : ClassVar[dict[str, marshmallow.fields.Field]]
- static
nested_fields : ClassVar[dict[str, collections.abc.Mapping[str, Any]]]
-
model_id : str
- The full model ID (or model slug) for a model.This is of the form "owner_name/model_name:model_version".
-
model_name : str
- The name of the model being referenced.If the model referenced is one already hosted in the hub then this will be the model name it was registered with.
If the model referenced is a local file, to be uploaded to the hub, then this is the file stem (e.g.
MyModel.py
has nameMyModel
).
Methods
get_model_from_hub
def get_model_from_hub(self, project_id: Optional[str] = None) ‑> type[BitfountModel]:
Gets the model referenced.
If the model is a Path to a BitfountModel
, it will upload it to BitfountHub
and return the model class. If it is a name of a model on the hub, it will
download the model from the hub and return the model class.
Returns The model class.
Raises
TypeError
: If the model is not a Path or a string.TypeError
: If the model does not implementDistributedModelProtocol
.ValueError
: If aBitfountHub
instance has not been provided or if there was a communication error with the hub.ValueError
: If a datastructure has not been provided.
get_weights
def get_weights(self, project_id: Optional[str] = None) ‑> Optional[bytes]:
Gets weights file uploaded for the model if one exists.
Returns The weights file as a byte stream.
send_weights
def send_weights(self, pretrained_file: Union[Path, str]) ‑> None:
Sends the model weights from a pretrained file to Hub.
Arguments
pretrained_file
: The path to the pretrained model file.
Raises
ValueError
: Ifmodel_version
has not been set on BitfountModelReference instance.
upload_model_and_weights
def upload_model_and_weights( self, project_id: Optional[str] = None,) ‑> type[BitfountModel]:
Uploads model and weights to the hub.
Should be used by the modeller to upload the model and weights to the hub at the beginning of a task.
Arguments
project_id
: The project ID to upload the model to. Defaults to None.