SkyRL
API ReferenceSkyRL

Types

Request/response types for the Tinker API.

Enums

class RequestType

Bases: str, Enum

Types of requests that can be processed.

Attributes:

Source code in skyrl/tinker/types.py:15-29
class RequestType(str, Enum):
    """Types of requests that can be processed."""

    CREATE_MODEL = "create_model"
    FORWARD_BACKWARD = "forward_backward"
    FORWARD = "forward"
    OPTIM_STEP = "optim_step"
    SAVE_WEIGHTS_FOR_SAMPLER = "save_weights_for_sampler"
    SAVE_WEIGHTS = "save_weights"
    LOAD_WEIGHTS = "load_weights"
    SAMPLE = "sample"
    UNLOAD_MODEL = "unload_model"

    # External request that should not be processed by the engine
    EXTERNAL = "external"

attr CREATE_MODEL

CREATE_MODEL = 'create_model'

attr FORWARD_BACKWARD

FORWARD_BACKWARD = 'forward_backward'

attr FORWARD

FORWARD = 'forward'

attr OPTIM_STEP

OPTIM_STEP = 'optim_step'

attr SAVE_WEIGHTS_FOR_SAMPLER

SAVE_WEIGHTS_FOR_SAMPLER = 'save_weights_for_sampler'

attr SAVE_WEIGHTS

SAVE_WEIGHTS = 'save_weights'

attr LOAD_WEIGHTS

LOAD_WEIGHTS = 'load_weights'

attr SAMPLE

SAMPLE = 'sample'

attr UNLOAD_MODEL

UNLOAD_MODEL = 'unload_model'

attr EXTERNAL

EXTERNAL = 'external'

class CheckpointType

Bases: str, Enum

Type of checkpoint.

Attributes:

NameTypeDescription
TRAINING
SAMPLER
Source code in skyrl/tinker/types.py:32-36
class CheckpointType(str, Enum):
    """Type of checkpoint."""

    TRAINING = "training"
    SAMPLER = "sampler"

attr TRAINING

TRAINING = 'training'

attr SAMPLER

SAMPLER = 'sampler'

Configuration

class TinkerPath

Bases: BaseModel

Functions:

NameDescription
parseParse a URL string into a TinkerPath object.

Attributes:

NameTypeDescription
primary_idstr
kindstr
secondary_idstr
Source code in skyrl/tinker/types.py:39-55
class TinkerPath(BaseModel):
    primary_id: str
    kind: str
    secondary_id: str

    @classmethod
    def parse(cls, url: str) -> TinkerPath | None:
        """Parse a URL string into a TinkerPath object."""
        parsed = urlparse(url)

        match (parsed.scheme, *parsed.path.split("/")):
            case ("tinker", "", secondary_id):
                return cls(primary_id=parsed.netloc, kind="", secondary_id=secondary_id)
            case ("tinker", "", kind, secondary_id):
                return cls(primary_id=parsed.netloc, kind=kind, secondary_id=secondary_id)
            case _:
                return None

attr primary_id

primary_id: str

attr kind

kind: str

attr secondary_id

secondary_id: str

method classmethod parse

parse(url: str) -> TinkerPath | None

Parse a URL string into a TinkerPath object.

Source code in skyrl/tinker/types.py:44-55
    @classmethod
    def parse(cls, url: str) -> TinkerPath | None:
        """Parse a URL string into a TinkerPath object."""
        parsed = urlparse(url)

        match (parsed.scheme, *parsed.path.split("/")):
            case ("tinker", "", secondary_id):
                return cls(primary_id=parsed.netloc, kind="", secondary_id=secondary_id)
            case ("tinker", "", kind, secondary_id):
                return cls(primary_id=parsed.netloc, kind=kind, secondary_id=secondary_id)
            case _:
                return None

class AdamParams

Bases: BaseModel

Attributes:

NameTypeDescription
learning_ratefloat
beta1float
beta2float
epsfloat
weight_decayfloat
Source code in skyrl/tinker/types.py:58-63
class AdamParams(BaseModel):
    learning_rate: float
    beta1: float
    beta2: float
    eps: float
    weight_decay: float

attr learning_rate

learning_rate: float

attr beta1

beta1: float

attr beta2

beta2: float

attr eps

eps: float

attr weight_decay

weight_decay: float

class LoraConfig

Bases: BaseModel

Attributes:

NameTypeDescription
rankint
alphafloat
seedint
train_attnbool
train_mlpbool
train_unembedbool
Source code in skyrl/tinker/types.py:66-72
class LoraConfig(BaseModel):
    rank: int
    alpha: float
    seed: int
    train_attn: bool = True
    train_mlp: bool = True
    train_unembed: bool = False

attr rank

rank: int

attr alpha

alpha: float

attr seed

seed: int

attr train_attn

train_attn: bool = True

attr train_mlp

train_mlp: bool = True

attr train_unembed

train_unembed: bool = False

class SamplingParams

Bases: BaseModel

Attributes:

NameTypeDescription
temperaturefloat
max_tokensint
seedint
stop_tokenslist[int]None
stop_stringslist[str]None
top_kint
top_pfloat
Source code in skyrl/tinker/types.py:175-182
class SamplingParams(BaseModel):
    temperature: float
    max_tokens: int
    seed: int
    stop_tokens: list[int] | None = None
    stop_strings: list[str] | None = None
    top_k: int = -1  # -1 for no limit
    top_p: float = 1.0  # 1.0 for no filtering

attr temperature

temperature: float

attr max_tokens

max_tokens: int

attr seed

seed: int

attr stop_tokens

stop_tokens: list[int] | None = None

attr stop_strings

stop_strings: list[str] | None = None

attr top_k

top_k: int = -1

attr top_p

top_p: float = 1.0

class ModelMetadata

Bases: BaseModel

Attributes:

Source code in skyrl/tinker/types.py:185-188
class ModelMetadata(BaseModel):
    adapter_index: int
    lora_config: LoraConfig
    loaded_checkpoint_id: str | None = None

attr adapter_index

adapter_index: int

attr lora_config

lora_config: LoraConfig

attr loaded_checkpoint_id

loaded_checkpoint_id: str | None = None

Model Lifecycle

class CreateModelInput

Bases: BaseModel

Attributes:

NameTypeDescription
lora_configLoraConfig
Source code in skyrl/tinker/types.py:75-76
class CreateModelInput(BaseModel):
    lora_config: LoraConfig

attr lora_config

lora_config: LoraConfig

class CreateModelOutput

Bases: BaseModel

Attributes:

Source code in skyrl/tinker/types.py:79-82
class CreateModelOutput(BaseModel):
    model_id: str
    base_model: str
    lora_config: LoraConfig

attr model_id

model_id: str

attr base_model

base_model: str

attr lora_config

lora_config: LoraConfig

class UnloadModelInput

Bases: BaseModel

class UnloadModelOutput

Bases: BaseModel

Attributes:

NameTypeDescription
model_idstr
statusstr
typestr
Source code in skyrl/tinker/types.py:89-92
class UnloadModelOutput(BaseModel):
    model_id: str
    status: str
    type: str = "unload_model"

attr model_id

model_id: str

attr status

status: str

attr type

type: str = 'unload_model'

Forward / Backward

class ModelInputChunk

Bases: BaseModel

Attributes:

NameTypeDescription
tokenslist[int]
Source code in skyrl/tinker/types.py:95-96
class ModelInputChunk(BaseModel):
    tokens: list[int]

attr tokens

tokens: list[int]

class ModelInput

Bases: BaseModel

Attributes:

NameTypeDescription
chunkslist[ModelInputChunk]
Source code in skyrl/tinker/types.py:99-100
class ModelInput(BaseModel):
    chunks: list[ModelInputChunk]

attr chunks

chunks: list[ModelInputChunk]

class TensorData

Bases: BaseModel

Attributes:

NameTypeDescription
datalist[int]list[float]
Source code in skyrl/tinker/types.py:103-104
class TensorData(BaseModel):
    data: list[int] | list[float]

attr data

data: list[int] | list[float]

class LossFnInputs

Bases: BaseModel

Attributes:

Source code in skyrl/tinker/types.py:107-111
class LossFnInputs(BaseModel):
    target_tokens: TensorData
    weights: TensorData
    advantages: TensorData
    logprobs: TensorData

attr target_tokens

target_tokens: TensorData

attr weights

weights: TensorData

attr advantages

advantages: TensorData

attr logprobs

logprobs: TensorData

class Datum

Bases: BaseModel

Attributes:

Source code in skyrl/tinker/types.py:114-116
class Datum(BaseModel):
    loss_fn_inputs: LossFnInputs
    model_input: ModelInput

attr loss_fn_inputs

loss_fn_inputs: LossFnInputs

attr model_input

model_input: ModelInput

class ForwardBackwardInput

Bases: BaseModel

Attributes:

NameTypeDescription
datalist[Datum]
loss_fnLiteral['cross_entropy', 'importance_sampling', 'ppo', 'cispo']
loss_fn_configdict[str, float]None
Source code in skyrl/tinker/types.py:119-122
class ForwardBackwardInput(BaseModel):
    data: list[Datum]
    loss_fn: Literal["cross_entropy", "importance_sampling", "ppo", "cispo"]
    loss_fn_config: dict[str, float] | None = None

attr data

data: list[Datum]

attr loss_fn

loss_fn: Literal['cross_entropy', 'importance_sampling', 'ppo', 'cispo']

attr loss_fn_config

loss_fn_config: dict[str, float] | None = None

class ForwardBackwardOutput

Bases: BaseModel

Attributes:

NameTypeDescription
loss_fn_output_typestr
loss_fn_outputslist[dict]
metricsdict
Source code in skyrl/tinker/types.py:125-128
class ForwardBackwardOutput(BaseModel):
    loss_fn_output_type: str
    loss_fn_outputs: list[dict]
    metrics: dict

attr loss_fn_output_type

loss_fn_output_type: str

attr loss_fn_outputs

loss_fn_outputs: list[dict]

attr property metrics

metrics: dict

Optimization

class OptimStepInput

Bases: BaseModel

Attributes:

NameTypeDescription
adam_paramsAdamParams
Source code in skyrl/tinker/types.py:136-137
class OptimStepInput(BaseModel):
    adam_params: AdamParams

attr adam_params

adam_params: AdamParams

class OptimStepOutput

Bases: BaseModel

Attributes:

NameTypeDescription
metricsdict[str, float]None
Source code in skyrl/tinker/types.py:140-141
class OptimStepOutput(BaseModel):
    metrics: dict[str, float] | None = None

attr property metrics

metrics: dict[str, float] | None = None

Checkpointing

class SaveWeightsForSamplerInput

Bases: BaseModel

Attributes:

NameTypeDescription
pathstrNone
sampling_session_seq_idintNone
seq_idintNone
sampling_session_idstrNone
Source code in skyrl/tinker/types.py:144-148
class SaveWeightsForSamplerInput(BaseModel):
    path: str | None = None
    sampling_session_seq_id: int | None = None
    seq_id: int | None = None
    sampling_session_id: str | None = None

attr path

path: str | None = None

attr sampling_session_seq_id

sampling_session_seq_id: int | None = None

attr seq_id

seq_id: int | None = None

attr sampling_session_id

sampling_session_id: str | None = None

class SaveWeightsForSamplerOutput

Bases: BaseModel

Attributes:

NameTypeDescription
pathstrNone
typestr
sampling_session_idstrNone
Source code in skyrl/tinker/types.py:151-154
class SaveWeightsForSamplerOutput(BaseModel):
    path: str | None = None
    type: str
    sampling_session_id: str | None = None

attr path

path: str | None = None

attr type

type: str

attr sampling_session_id

sampling_session_id: str | None = None

class SaveWeightsInput

Bases: BaseModel

Attributes:

NameTypeDescription
pathstr
Source code in skyrl/tinker/types.py:157-158
class SaveWeightsInput(BaseModel):
    path: str

attr path

path: str

class SaveWeightsOutput

Bases: BaseModel

Attributes:

NameTypeDescription
pathstr
typestr
Source code in skyrl/tinker/types.py:161-163
class SaveWeightsOutput(BaseModel):
    path: str
    type: str

attr path

path: str

attr type

type: str

class LoadWeightsInput

Bases: BaseModel

Attributes:

NameTypeDescription
source_model_idstr
checkpoint_idstr
Source code in skyrl/tinker/types.py:166-168
class LoadWeightsInput(BaseModel):
    source_model_id: str
    checkpoint_id: str

attr source_model_id

source_model_id: str

attr checkpoint_id

checkpoint_id: str

class LoadWeightsOutput

Bases: BaseModel

Attributes:

NameTypeDescription
typestr
Source code in skyrl/tinker/types.py:171-172
class LoadWeightsOutput(BaseModel):
    type: str

attr type

type: str

Sampling

class SampleInput

Bases: BaseModel

Attributes:

Source code in skyrl/tinker/types.py:191-197
class SampleInput(BaseModel):
    base_model: str | None = None
    prompt: ModelInput
    sampling_params: SamplingParams
    num_samples: int
    checkpoint_id: str
    prompt_logprobs: bool

attr base_model

base_model: str | None = None

attr prompt

prompt: ModelInput

attr sampling_params

sampling_params: SamplingParams

attr num_samples

num_samples: int

attr checkpoint_id

checkpoint_id: str

attr prompt_logprobs

prompt_logprobs: bool

class GeneratedSequence

Bases: BaseModel

Attributes:

NameTypeDescription
stop_reasonLiteral['length', 'stop']
tokenslist[int]
logprobslist[float]
Source code in skyrl/tinker/types.py:200-203
class GeneratedSequence(BaseModel):
    stop_reason: Literal["length", "stop"]
    tokens: list[int]
    logprobs: list[float]

attr stop_reason

stop_reason: Literal['length', 'stop']

attr tokens

tokens: list[int]

attr logprobs

logprobs: list[float]

class SampleOutput

Bases: BaseModel

Attributes:

NameTypeDescription
sequenceslist[GeneratedSequence]
prompt_logprobslist[float]None
Source code in skyrl/tinker/types.py:206-208
class SampleOutput(BaseModel):
    sequences: list[GeneratedSequence]
    prompt_logprobs: list[float] | None = None

attr sequences

sequences: list[GeneratedSequence]

attr prompt_logprobs

prompt_logprobs: list[float] | None = None

Engine Types

class ErrorResponse

Bases: BaseModel

Attributes:

NameTypeDescription
errorstr
statusstr
Source code in skyrl/tinker/types.py:131-133
class ErrorResponse(BaseModel):
    error: str
    status: str

attr error

error: str

attr status

status: str

class EngineMetrics

Bases: BaseModel

Attributes:

NameTypeDescription
train_seq_len_jit_timesdict[int, float]
sample_seq_len_jit_timesdict[int, float]
Source code in skyrl/tinker/types.py:212-214
class EngineMetrics(BaseModel):
    train_seq_len_jit_times: dict[int, float] = {}
    sample_seq_len_jit_times: dict[int, float] = {}

attr train_seq_len_jit_times

train_seq_len_jit_times: dict[int, float] = {}

attr sample_seq_len_jit_times

sample_seq_len_jit_times: dict[int, float] = {}

class PreparedModelPassBatch

Bases: BaseModel

Prepared batch data for forward/forward_backward operations.

Engine extracts this from requests, backend converts to JAX arrays and computes.

Attributes:

NameTypeDescription
all_input_idslist[list[int]]
all_targetslist[list[int]]
all_token_weightslist[list[float]]
all_sampling_logprobslist[list[float]]
all_advantageslist[list[float]]
all_model_idslist[str]
all_loss_fnslist[str]
all_loss_fn_configslist[dict[str, float]None]
request_batch_sliceslist[tuple[str, str, int, int]]
Source code in skyrl/tinker/types.py:221-240
class PreparedModelPassBatch(BaseModel):
    """Prepared batch data for forward/forward_backward operations.

    Engine extracts this from requests, backend converts to JAX arrays and computes.
    """

    # Per-example data (list of lists)
    all_input_ids: list[list[int]]
    all_targets: list[list[int]]
    all_token_weights: list[list[float]]
    all_sampling_logprobs: list[list[float]]
    all_advantages: list[list[float]]

    # Per-example scalars
    all_model_ids: list[str]
    all_loss_fns: list[str]
    all_loss_fn_configs: list[dict[str, float] | None]

    # Mapping from examples back to requests: (request_id, model_id, start_idx, end_idx)
    request_batch_slices: list[tuple[str, str, int, int]]

attr all_input_ids

all_input_ids: list[list[int]]

attr all_targets

all_targets: list[list[int]]

attr all_token_weights

all_token_weights: list[list[float]]

attr all_sampling_logprobs

all_sampling_logprobs: list[list[float]]

attr all_advantages

all_advantages: list[list[float]]

attr all_model_ids

all_model_ids: list[str]

attr all_loss_fns

all_loss_fns: list[str]

attr all_loss_fn_configs

all_loss_fn_configs: list[dict[str, float] | None]

attr request_batch_slices

request_batch_slices: list[tuple[str, str, int, int]]

class PreparedSampleBatch

Bases: BaseModel

Prepared batch data for sample operations.

Engine extracts this from requests, backend converts to JAX arrays and computes.

Attributes:

NameTypeDescription
all_promptslist[list[int]]
all_sampling_paramslist[SamplingParams]
all_model_idslist[str]
all_checkpoint_idslist[str]
all_checkpoint_pathslist[str]
needs_prompt_logprobsbool
request_batch_sliceslist[tuple[str, str, int, int, bool]]
Source code in skyrl/tinker/types.py:243-260
class PreparedSampleBatch(BaseModel):
    """Prepared batch data for sample operations.

    Engine extracts this from requests, backend converts to JAX arrays and computes.
    """

    # Per-sample data
    all_prompts: list[list[int]]
    all_sampling_params: list[SamplingParams]
    all_model_ids: list[str]
    all_checkpoint_ids: list[str]
    all_checkpoint_paths: list[str]

    # Whether any request needs prompt logprobs
    needs_prompt_logprobs: bool

    # Mapping from samples back to requests: (request_id, model_id, start_idx, end_idx, prompt_logprobs_requested)
    request_batch_slices: list[tuple[str, str, int, int, bool]]

attr all_prompts

all_prompts: list[list[int]]

attr all_sampling_params

all_sampling_params: list[SamplingParams]

attr all_model_ids

all_model_ids: list[str]

attr all_checkpoint_ids

all_checkpoint_ids: list[str]

attr all_checkpoint_paths

all_checkpoint_paths: list[str]

attr needs_prompt_logprobs

needs_prompt_logprobs: bool

attr request_batch_slices

request_batch_slices: list[tuple[str, str, int, int, bool]]

On this page

Enumsclass RequestTypeattr CREATE_MODELattr FORWARD_BACKWARDattr FORWARDattr OPTIM_STEPattr SAVE_WEIGHTS_FOR_SAMPLERattr SAVE_WEIGHTSattr LOAD_WEIGHTSattr SAMPLEattr UNLOAD_MODELattr EXTERNALclass CheckpointTypeattr TRAININGattr SAMPLERConfigurationclass TinkerPathattr primary_idattr kindattr secondary_idmethod classmethod parseclass AdamParamsattr learning_rateattr beta1attr beta2attr epsattr weight_decayclass LoraConfigattr rankattr alphaattr seedattr train_attnattr train_mlpattr train_unembedclass SamplingParamsattr temperatureattr max_tokensattr seedattr stop_tokensattr stop_stringsattr top_kattr top_pclass ModelMetadataattr adapter_indexattr lora_configattr loaded_checkpoint_idModel Lifecycleclass CreateModelInputattr lora_configclass CreateModelOutputattr model_idattr base_modelattr lora_configclass UnloadModelInputclass UnloadModelOutputattr model_idattr statusattr typeForward / Backwardclass ModelInputChunkattr tokensclass ModelInputattr chunksclass TensorDataattr dataclass LossFnInputsattr target_tokensattr weightsattr advantagesattr logprobsclass Datumattr loss_fn_inputsattr model_inputclass ForwardBackwardInputattr dataattr loss_fnattr loss_fn_configclass ForwardBackwardOutputattr loss_fn_output_typeattr loss_fn_outputsattr property metricsOptimizationclass OptimStepInputattr adam_paramsclass OptimStepOutputattr property metricsCheckpointingclass SaveWeightsForSamplerInputattr pathattr sampling_session_seq_idattr seq_idattr sampling_session_idclass SaveWeightsForSamplerOutputattr pathattr typeattr sampling_session_idclass SaveWeightsInputattr pathclass SaveWeightsOutputattr pathattr typeclass LoadWeightsInputattr source_model_idattr checkpoint_idclass LoadWeightsOutputattr typeSamplingclass SampleInputattr base_modelattr promptattr sampling_paramsattr num_samplesattr checkpoint_idattr prompt_logprobsclass GeneratedSequenceattr stop_reasonattr tokensattr logprobsclass SampleOutputattr sequencesattr prompt_logprobsEngine Typesclass ErrorResponseattr errorattr statusclass EngineMetricsattr train_seq_len_jit_timesattr sample_seq_len_jit_timesclass PreparedModelPassBatchattr all_input_idsattr all_targetsattr all_token_weightsattr all_sampling_logprobsattr all_advantagesattr all_model_idsattr all_loss_fnsattr all_loss_fn_configsattr request_batch_slicesclass PreparedSampleBatchattr all_promptsattr all_sampling_paramsattr all_model_idsattr all_checkpoint_idsattr all_checkpoint_pathsattr needs_prompt_logprobsattr request_batch_slices