trinity.common.models.model module#
Base Model Class
- class trinity.common.models.model.InferenceModel(config: InferenceModelConfig)[source]#
Bases:
ABCA model for high performance for rollout inference.
- __init__(config: InferenceModelConfig) None[source]#
- async generate(prompt: str, **kwargs) Sequence[Experience][source]#
Generate a responses from a prompt in async.
- async chat(messages: List[dict], **kwargs) Sequence[Experience][source]#
Generate experiences from a list of history chat messages in async.
- async logprobs(token_ids: List[int], **kwargs) Tensor[source]#
Generate logprobs for a list of tokens in async.
- async convert_messages_to_experience(messages: List[dict], tools: List[dict] | None = None, temperature: float | None = None) Experience[source]#
Convert a list of messages into an experience in async.
- async init_process_group(master_address: str, master_port: int, rank_offset: int, world_size: int, group_name: str, backend: str = 'nccl', timeout: int = 1200)[source]#
Initialize the process group for model weight synchronization.
- async set_state_dict_meta(state_dict_meta: List)[source]#
Set the state_dict meta for NCCL weight sync.
- abstractmethod async sync_model_weights(model_version: int, method: SyncMethod, timeout: float = 1200) int[source]#
Sync the model with the latest model_version.
- get_available_address(random_port: bool = False) Tuple[str, int][source]#
Get an available address on the current actor node.
- Parameters:
random_port β Whether to skip the configured
base_portconvention and allocate an ephemeral port on the current node directly.
- set_master_addr_port(master_addr: str, master_port: int)[source]#
For multi node setup, set the master address and port for distributed communication.
- get_model_config() InferenceModelConfig[source]#
Get the model configuration.
- class trinity.common.models.model.BaseInferenceModel(config: InferenceModelConfig)[source]#
Bases:
InferenceModelBase class for inference models containing common logic.
- __init__(config: InferenceModelConfig) None[source]#
- async convert_messages_to_experience(messages: List[dict], tools: List[dict] | None = None, temperature: float | None = None) Experience[source]#
Convert a list of messages into an experience in async.
- Parameters:
messages β List of message dictionaries
tools β Optional list of tools
temperature β Optional temperature for logprobs calculation
- class trinity.common.models.model.ModelWrapper(model: ActorHandle[InferenceModel] | None = None, models: List[ActorHandle[InferenceModel]] | None = None, config: InferenceModelConfig | None = None, api_address: str | None = None)[source]#
Bases:
objectA wrapper for the InferenceModel Ray Actor
- __init__(model: ActorHandle[InferenceModel] | None = None, models: List[ActorHandle[InferenceModel]] | None = None, config: InferenceModelConfig | None = None, api_address: str | None = None)[source]#
Initialize the ModelWrapper.
- Parameters:
model (InferenceModel) β The inference model Ray actor.
models (List[InferenceModel]) β A list of inference model Ray actors for ensemble. The first model will be used as the main model for generation and other models will be used for auxiliary purposes such as logprobs calculation. If model is provided, models will be ignored.
config (InferenceModelConfig) β The configuration for the inference model.
api_address (str, optional) β The API address for the model. Required if enable_openai_api is True in the config.
- logprobs(tokens: List[int], temperature: float | None = None) Tensor[source]#
Calculate the logprobs of the given tokens.
- async logprobs_async(tokens: List[int], temperature: float | None = None) Tensor[source]#
Calculate the logprobs of the given tokens in async.
- convert_messages_to_experience(messages: List[dict], tools: List[dict] | None = None, temperature: float | None = None) Experience[source]#
Convert a list of messages into an experience.
- async convert_messages_to_experience_async(messages: List[dict], tools: List[dict] | None = None, temperature: float | None = None) Experience[source]#
Convert a list of messages into an experience in async.
- property api_key: str#
Get the API key.
- property model_version: int#
Get the version of the model.
- property model_version_async: int#
Get the version of the model.
- property model_path: str#
- property model_name: str#
Get the name of the model.
- property model_config: InferenceModelConfig#
Get the model config.
- property generate_kwargs: Dict[str, Any]#
Get the generation kwargs for openai client.
- get_openai_client() openai.OpenAI[source]#
Get the openai client.
- Returns:
The openai client. And model_path is added to the client which refers to the model path.
- Return type:
openai.OpenAI
- get_openai_async_client() openai.AsyncOpenAI[source]#
Get the async openai client.
- Returns:
The async openai client. And model_path is added to the client which refers to the model path.
- Return type:
openai.AsyncOpenAI
- async init_process_group(master_address: str, master_port: int, rank_offset: int, world_size: int, group_name: str, timeout: int = 1200)[source]#
Initialize the process group for model weight synchronization.
- async set_state_dict_meta(state_dict_meta: List)[source]#
Set the state_dict meta for NCCL weight sync.
- async sync_model_weights(model_version: int, method: SyncMethod, timeout: float = 1200) None[source]#
Sync the model weights
- extract_experience_from_history(clear_history: bool = True) List[Experience][source]#
Extract experiences from the history.
- clone_with_isolated_history() ModelWrapper[source]#
Clone the current ModelWrapper with isolated history.