Module aiolirest.models.packaged_model_request
HPE Machine Learning Inference Software (MLIS/Aioli)
HPE MLIS is Aioli – The AI On-line Inference Platform that enables easy deployment, tracking, and serving of your packaged models regardless of your preferred AI framework.
The version of the OpenAPI document: 1.0.0 Contact: community@determined-ai Generated by OpenAPI Generator (https://openapi-generator.tech)
Do not edit the class manually.
Expand source code
# coding: utf-8
"""
HPE Machine Learning Inference Software (MLIS/Aioli)
HPE MLIS is *Aioli* -- The AI On-line Inference Platform that enables easy deployment, tracking, and serving of your packaged models regardless of your preferred AI framework.
The version of the OpenAPI document: 1.0.0
Contact: community@determined-ai
Generated by OpenAPI Generator (https://openapi-generator.tech)
Do not edit the class manually.
""" # noqa: E501
from __future__ import annotations
import pprint
import re # noqa: F401
import json
from typing import Any, ClassVar, Dict, List, Optional
from pydantic import BaseModel, StrictStr
from pydantic import Field
from aiolirest.models.configuration_resources import ConfigurationResources
try:
from typing import Self
except ImportError:
from typing_extensions import Self
class PackagedModelRequest(BaseModel):
"""
The PackagedModel describes a specific model that can be loaded. It optionally references a model registry to provide authorization, and other details.
""" # noqa: E501
arguments: Optional[List[StrictStr]] = Field(default=None, description="Arguments to be added to the service command line")
description: Optional[StrictStr] = Field(default=None, description="A description of the model.")
environment: Optional[Dict[str, StrictStr]] = Field(default=None, description="Environment variables added to the service")
image: Optional[StrictStr] = Field(default=None, description="Docker container image servicing the model. This is required for a 'nim' model format.")
format: Optional[StrictStr] = Field(default='custom', description="Model format for downloaded models (e.g. from s3, http, etc.). Must be one of the values: (bento-archive, openllm, nim, custom). * `custom` - The packaged model is provided in a container image. * `bento-archive` - The packaged model is a bento archive file (.bento). It will be downloaded, expanded, and then will be served using the `bentolm serve` command in a provided bentoml serving container. * `openllm` - The packaged model will be served using the `openllm serve` command in a provided openllm serving container. * `nim` - The packaged model will be served using the specified NVIDIA NIM microservices container image.", alias="modelFormat")
name: StrictStr = Field(description="The name of the model. Must consist of alphanumeric characters, '-', or '.', and must start and end with an alphanumeric character. The length of the model name must be 63 characters or less.")
registry: Optional[StrictStr] = Field(default=None, description="The name or ID of the model registry.")
resources: Optional[ConfigurationResources] = None
url: Optional[StrictStr] = Field(default=None, description="Reference to the bento or model to be served. Supported schemes are: * `openllm://` - An openllm model name from huggingface.co dynamically loaded and executed with a VLLM backend. * `s3://` - An openllm model path which will be dynamically downloaded from an associated s3 registry bucket and executed with a VLLM backend. * `ngc://` - An NVIDIA NGC model will be dynamically downloaded from the associated `ngc` registry bucket and executed with the specified NVIDIA NIM microservices container image.")
__properties: ClassVar[List[str]] = ["arguments", "description", "environment", "image", "modelFormat", "name", "registry", "resources", "url"]
model_config = {
"populate_by_name": True,
"validate_assignment": True
}
def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))
def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
return json.dumps(self.to_dict())
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of PackagedModelRequest from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:
* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
_dict = self.model_dump(
by_alias=True,
exclude={
},
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of resources
if self.resources:
_dict['resources'] = self.resources.to_dict()
return _dict
@classmethod
def from_dict(cls, obj: Dict) -> Self:
"""Create an instance of PackagedModelRequest from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate({
"arguments": obj.get("arguments"),
"description": obj.get("description"),
"environment": obj.get("environment"),
"image": obj.get("image"),
"modelFormat": obj.get("modelFormat") if obj.get("modelFormat") is not None else 'custom',
"name": obj.get("name"),
"registry": obj.get("registry"),
"resources": ConfigurationResources.from_dict(obj.get("resources")) if obj.get("resources") is not None else None,
"url": obj.get("url")
})
return _obj
Classes
class PackagedModelRequest (**data: Any)
-
The PackagedModel describes a specific model that can be loaded. It optionally references a model registry to provide authorization, and other details.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError
][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.self
is explicitly positional-only to allowself
as a field name.Expand source code
class PackagedModelRequest(BaseModel): """ The PackagedModel describes a specific model that can be loaded. It optionally references a model registry to provide authorization, and other details. """ # noqa: E501 arguments: Optional[List[StrictStr]] = Field(default=None, description="Arguments to be added to the service command line") description: Optional[StrictStr] = Field(default=None, description="A description of the model.") environment: Optional[Dict[str, StrictStr]] = Field(default=None, description="Environment variables added to the service") image: Optional[StrictStr] = Field(default=None, description="Docker container image servicing the model. This is required for a 'nim' model format.") format: Optional[StrictStr] = Field(default='custom', description="Model format for downloaded models (e.g. from s3, http, etc.). Must be one of the values: (bento-archive, openllm, nim, custom). * `custom` - The packaged model is provided in a container image. * `bento-archive` - The packaged model is a bento archive file (.bento). It will be downloaded, expanded, and then will be served using the `bentolm serve` command in a provided bentoml serving container. * `openllm` - The packaged model will be served using the `openllm serve` command in a provided openllm serving container. * `nim` - The packaged model will be served using the specified NVIDIA NIM microservices container image.", alias="modelFormat") name: StrictStr = Field(description="The name of the model. Must consist of alphanumeric characters, '-', or '.', and must start and end with an alphanumeric character. The length of the model name must be 63 characters or less.") registry: Optional[StrictStr] = Field(default=None, description="The name or ID of the model registry.") resources: Optional[ConfigurationResources] = None url: Optional[StrictStr] = Field(default=None, description="Reference to the bento or model to be served. Supported schemes are: * `openllm://` - An openllm model name from huggingface.co dynamically loaded and executed with a VLLM backend. * `s3://` - An openllm model path which will be dynamically downloaded from an associated s3 registry bucket and executed with a VLLM backend. * `ngc://` - An NVIDIA NGC model will be dynamically downloaded from the associated `ngc` registry bucket and executed with the specified NVIDIA NIM microservices container image.") __properties: ClassVar[List[str]] = ["arguments", "description", "environment", "image", "modelFormat", "name", "registry", "resources", "url"] model_config = { "populate_by_name": True, "validate_assignment": True } def to_str(self) -> str: """Returns the string representation of the model using alias""" return pprint.pformat(self.model_dump(by_alias=True)) def to_json(self) -> str: """Returns the JSON representation of the model using alias""" # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead return json.dumps(self.to_dict()) @classmethod def from_json(cls, json_str: str) -> Self: """Create an instance of PackagedModelRequest from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: """Return the dictionary representation of the model using alias. This has the following differences from calling pydantic's `self.model_dump(by_alias=True)`: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. """ _dict = self.model_dump( by_alias=True, exclude={ }, exclude_none=True, ) # override the default output from pydantic by calling `to_dict()` of resources if self.resources: _dict['resources'] = self.resources.to_dict() return _dict @classmethod def from_dict(cls, obj: Dict) -> Self: """Create an instance of PackagedModelRequest from a dict""" if obj is None: return None if not isinstance(obj, dict): return cls.model_validate(obj) _obj = cls.model_validate({ "arguments": obj.get("arguments"), "description": obj.get("description"), "environment": obj.get("environment"), "image": obj.get("image"), "modelFormat": obj.get("modelFormat") if obj.get("modelFormat") is not None else 'custom', "name": obj.get("name"), "registry": obj.get("registry"), "resources": ConfigurationResources.from_dict(obj.get("resources")) if obj.get("resources") is not None else None, "url": obj.get("url") }) return _obj
Ancestors
- pydantic.main.BaseModel
Class variables
var arguments : Optional[List[str]]
var description : Optional[str]
var environment : Optional[Dict[str, str]]
var format : Optional[str]
var image : Optional[str]
var model_computed_fields
var model_config
var model_fields
var name : str
var registry : Optional[str]
var resources : Optional[ConfigurationResources]
var url : Optional[str]
Static methods
def from_dict(obj: Dict) ‑> Self
-
Create an instance of PackagedModelRequest from a dict
Expand source code
@classmethod def from_dict(cls, obj: Dict) -> Self: """Create an instance of PackagedModelRequest from a dict""" if obj is None: return None if not isinstance(obj, dict): return cls.model_validate(obj) _obj = cls.model_validate({ "arguments": obj.get("arguments"), "description": obj.get("description"), "environment": obj.get("environment"), "image": obj.get("image"), "modelFormat": obj.get("modelFormat") if obj.get("modelFormat") is not None else 'custom', "name": obj.get("name"), "registry": obj.get("registry"), "resources": ConfigurationResources.from_dict(obj.get("resources")) if obj.get("resources") is not None else None, "url": obj.get("url") }) return _obj
def from_json(json_str: str) ‑> Self
-
Create an instance of PackagedModelRequest from a JSON string
Expand source code
@classmethod def from_json(cls, json_str: str) -> Self: """Create an instance of PackagedModelRequest from a JSON string""" return cls.from_dict(json.loads(json_str))
Methods
def model_post_init(self: BaseModel, context: Any, /) ‑> None
-
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that's what pydantic-core passes when calling it.
Args
self
- The BaseModel instance.
context
- The context.
Expand source code
def init_private_attributes(self: BaseModel, context: Any, /) -> None: """This function is meant to behave like a BaseModel method to initialise private attributes. It takes context as an argument since that's what pydantic-core passes when calling it. Args: self: The BaseModel instance. context: The context. """ if getattr(self, '__pydantic_private__', None) is None: pydantic_private = {} for name, private_attr in self.__private_attributes__.items(): default = private_attr.get_default() if default is not PydanticUndefined: pydantic_private[name] = default object_setattr(self, '__pydantic_private__', pydantic_private)
def to_dict(self) ‑> Dict[str, Any]
-
Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
self.model_dump(by_alias=True)
:None
is only added to the output dict for nullable fields that were set at model initialization. Other fields with valueNone
are ignored.
Expand source code
def to_dict(self) -> Dict[str, Any]: """Return the dictionary representation of the model using alias. This has the following differences from calling pydantic's `self.model_dump(by_alias=True)`: * `None` is only added to the output dict for nullable fields that were set at model initialization. Other fields with value `None` are ignored. """ _dict = self.model_dump( by_alias=True, exclude={ }, exclude_none=True, ) # override the default output from pydantic by calling `to_dict()` of resources if self.resources: _dict['resources'] = self.resources.to_dict() return _dict
def to_json(self) ‑> str
-
Returns the JSON representation of the model using alias
Expand source code
def to_json(self) -> str: """Returns the JSON representation of the model using alias""" # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead return json.dumps(self.to_dict())
def to_str(self) ‑> str
-
Returns the string representation of the model using alias
Expand source code
def to_str(self) -> str: """Returns the string representation of the model using alias""" return pprint.pformat(self.model_dump(by_alias=True))