TorchFort Fortran API¶
These are all the types and functions available in the TorchFort Fortran API.
General¶
Types¶
torchfort_datatype¶
See documentation for equivalent C enumerator, torchfort_datatype_t.
torchfort_result¶
See documentation for equivalent C enumerator, torchfort_result_t.
Global Context Settings¶
These are global routines which affect the behavior of the libtorch backend. It is therefore recommended to call these functions before any other TorchFort calls are made.
torchfort_set_cudnn_benchmark¶
- function torchfort_set_cudnn_benchmark(flag)¶
Enables or disables cuDNN benchmark mode. See the PyTorch documentation for more details.
- Parameters
flag [logical,in] :: A flag to enable (
.true.
) or disable (.false.
) cuDNN kernel benchmarking.- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Supervised Learning¶
Model Creation¶
torchfort_create_model¶
- function torchfort_create_model(name, config_fname, device)¶
Creates a model from a provided configuration file.
- Parameters
handle [character(:),in] :: A name to assign to the created model instance to use as a key for other TorchFort routines.
config_fname [character(:),in] :: The filesystem path to the user-defined model configuration file to use.
device [integer,in] :: Which device to place and run the model on. For
TORCHFORT_DEVICE_CPU
(-1), model will be placed on CPU. For values >= 0, model will be placed on GPU with index corresponding to value.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_create_distributed_model¶
- function torchfort_create_distributed_model(name, config_fname, mpi_comm, device)¶
Creates a distributed data-parallel model from a provided configuration file.
- Parameters
handle [character(:),in] :: A name to assign to the created model instance to use as a key for other TorchFort routines.
config_fname [character(:),in] :: The filesystem path to the user-defined configuration file to use.
mpi_comm [integer,in] :: MPI communicator to use to initialize NCCL communication library for data-parallel communication.
device [integer,in] :: Which device to place and run the model on. For
TORCHFORT_DEVICE_CPU
(-1), model will be placed on CPU. For values >= 0, model will be placed on GPU with index corresponding to value.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Model Training/Inference¶
torchfort_train¶
- function torchfort_train(mname, input, label, loss_val, stream)¶
Runs a training iteration of a model instance using provided input and label data.
For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
mname [character(:),in] :: The key of the model instance.
input [T(*),in] :: An array containing the input data. The last array dimension should be the batch dimension, the other dimensions are the feature dimensions.
label [T(*),in] :: An array containing the label data. The last array dimension should be the batch dimension.
label
does not need to be of the same shape asinput
but the batch dimension should match. Additionally,label
should be of the same rank as input.loss_val [T,out] :: A variable that will hold the loss value computed during the training iteration.
stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_inference¶
- function torchfort_inference(mname, input, output, stream)¶
Runs inference on a model using provided input data.
For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
mname [character(:),in] :: The key of the model instance.
input [T(*),in] :: An array containing the input data. The last array dimension should be the batch dimension, the other dimensions are the feature dimensions.
output [T(*),out] :: An array which will hold the output of the model. The last array dimension should be the batch dimension.
output
does not need to be of the same shape asinput
but the batch dimension should match. Additionally,output
should be of the same rank as input.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Model Management¶
torchfort_save_model¶
- function torchfort_save_model(mname, fname)¶
Saves a model to file.
- Parameters
mname [character(:),in] :: The name of model instance to save, as defined during model creation.
fname [character(:),in] :: The filename to save the model weights to.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_load_model¶
- function torchfort_load_model(mname, fname)¶
Loads a model from a file.
- Parameters
mname [character(:),in] :: The name of model instance to load the model weights to, as defined during model creation.
fname [character(:),in] :: The filename to load the model weights from.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_save_checkpoint¶
- function torchfort_save_checkpoint(mname, checkpoint_dir)¶
Saves a training checkpoint to a directory. In contrast to
torchfort_save_model
, this function saves additional state to restart training, like the optimizer states and learning rate schedule progress.- Parameters
mname [character(:),in] :: The name of model instance to save, as defined during model creation.
checkpoint_dir [character(:),in] :: A writeable filesystem path to a directory to save the checkpoint data to.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_load_checkpoint¶
- function torchfort_load_checkpoint(mname, checkpoint_dir)¶
Loads a training checkpoint from a directory. In contrast to
torchfort_load_model
, this function loads additional state to restart training, like the optimizer states and learning rate schedule progress.- Parameters
mname [character(:),in] :: The name of model instance to load checkpoint data into, as defined during model creation.
checkpoint_dir [character(:),in] :: A readable filesystem path to a directory to load the checkpoint data from.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Weights and Biases Logging¶
torchfort_wandb_log_int¶
- function torchfort_wandb_log_int(mname, metric_name, step, val)¶
Write an integer value to a Weights and Bias log. Use the
_float
and_double
variants to writereal32
andreal64
values respectively.- Parameters
mname [character(:),in] :: The name of model instance to associate this metric value with, as defined during model creation.
metric_name [character(:),in] :: Metric label.
step [integer,in] :: Training/inference step to associate with metric value.
val [integer,in] :: Metric value to log.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_wandb_log_float¶
- function torchfort_wandb_log_float(mname, metric_name, step, val)¶
torchfort_wandb_log_double¶
- function torchfort_wandb_log_double(mname, metric_name, step, val)¶
Reinforcement Learning¶
Similar to other reinforcement learning frameworks such as Spinning Up from OpenAI or Stable Baselines, we distinguish between on-policy and off-policy algorithms since those two types require different APIs.
Off-Policy Algorithms¶
System Creation¶
Basic routines to create and register a reinforcement learning system in the internal registry. A (synchronous) data parallel distributed option is available.
torchfort_rl_off_policy_create_system¶
- function torchfort_rl_off_policy_create_system(name, config_fname, model_device, rb_device)¶
Creates an off-policy reinforcement learning training system instance from a provided configuration file.
- Parameters
name [character(:),in] :: A name to assign to the created training system instance to use as a key for other TorchFort routines.
config_fname [character(:),in] :: The filesystem path to the user-defined configuration file to use.
model_device [integer,in] :: Which device to place and run the model on. For
TORCHFORT_DEVICE_CPU
(-1), model will be placed on CPU. For values >= 0, model will be placed on GPU with index corresponding to value.rb_device [integer,in] :: Which device to place and run the replay buffer on. For
TORCHFORT_DEVICE_CPU
(-1), replay buffer will be placed on CPU. For values >= 0, it will be placed on GPU with index corresponding to value.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_create_distributed_system¶
- function torchfort_rl_off_policy_create_distributed_system(name, config_fname, mpi_comm, model_device, rb_device)¶
Creates a (synchronous) data-parallel off-policy reinforcement learning system instance from a provided configuration file.
- Parameters
name [character(:),in] :: A name to assign to the created training system instance to use as a key for other TorchFort routines.
config_fname [character(:),in] :: The filesystem path to the user-defined configuration file to use.
mpi_comm [integer,in] :: MPI communicator to use to initialize NCCL communication library for data-parallel communication.
model_device [integer,in] :: Which device to place and run the model on. For
TORCHFORT_DEVICE_CPU
(-1), model will be placed on CPU. For values >= 0, model will be placed on GPU with index corresponding to value.rb_device [integer,in] :: Which device to place the replay buffer on. For
TORCHFORT_DEVICE_CPU
(-1), replay buffer will be placed on CPU. For values >= 0, it will be placed on GPU with index corresponding to value.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Training/Evaluation¶
These routines are be used for training the reinforcement learning system or for steering the environment.
torchfort_rl_off_policy_train_step¶
- function torchfort_rl_off_policy_train_step(name, p_loss_val, q_loss_val, stream)¶
Runs a training iteration of an off-policy refinforcement learning instance and returns loss values for policy and value functions. This routine samples a batch of specified size from the replay buffer according to the buffers sampling procedure and performs a train step using this sample. The details of the training procedure are abstracted away from the user and depend on the chosen system algorithm. For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
p_loss_val [T,out] :: A single or double precision variable which will hold the policy loss value computed during the training iteration.
q_loss_val [T,out] :: A single or double precision variable which will hold the critic loss value computed during the training iteration, averaged over all available critics (depends on the chosen algorithm).
stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_predict_explore¶
- function torchfort_rl_off_policy_predict_explore(name, state, act, stream)¶
Suggests an action based on the current state of the system and adds noise as specified by the coprresponding reinforcement learning system. Depending on the reinforcement learning algorithm used, the prediction is performed by the main network (not the target network). In contrast to
torchfort_rl_off_policy_predict
, this routine adds noise and thus is called explorative. The kind of noise is specified during system creation.For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the state space.act [T,out] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the action space.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_predict¶
- function torchfort_rl_off_policy_predict(name, state, act, stream)¶
Suggests an action based on the current state of the system. Depending on the algorithm used, the prediction is performed by the target network. In contrast to
torchfort_rl_off_policy_predict_explore
, this routine does not add noise, which means it is exploitative.For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the state space.act [T,out] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the action space.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_evaluate¶
- function torchfort_rl_off_policy_evaluate(name, state, act, reward, stream)¶
Predicts the future reward based on the current state and selected action. Depending on the learning algorithm, the routine queries the target critic networks for this. The routine averages the predictions over all critics.
For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the state space.act [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the action space.reward [T,out] :: Two-dimensional array of size (1,
batch_size
) which will hold the predicted reward values.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
System Management¶
torchfort_rl_off_policy_update_replay_buffer¶
- function torchfort_rl_off_policy_update_replay_buffer(name, state_old, act_old, state_new, reward, terminal, stream)¶
Adds a new \((s, a, s', r, d)\) tuple to the replay buffer. Here \(s\) (
state_old
) is the state for which action \(a\) (action_old
) was taken, leading to \(s'\) (state_new
) and receiving reward \(r\) (reward
). The terminal state flag \(d\) (final_state
) specifies whether \(s'\) is the final state in the episode.For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state_old [T,in] :: Multi-dimensional array of size of the state space.
act_old [T,in] :: Multi-dimensional array of size of the action space.
state_new [T,in] :: Multi-dimensional array of size of the state space.
reward [T,in] :: Reward value.
final_state [logical,in] :: Terminal flag.
stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_is_ready¶
- function torchfort_rl_off_policy_is_ready(name, ready)¶
Queries a reinforcement learning system for rediness to start training. A user should call this method before starting training to make sure the reinforcement learning system is ready. This ensures that the replay buffer is filled sufficiently with exploration data as specified during system creation.
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
ready [logical,out] :: Logical indicating if the system is ready for training.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_save_checkpoint¶
- function torchfort_rl_off_policy_save_checkpoint(name, checkpoint_dir)¶
Saves a reinforcement learning training checkpoint to a directory. This method saves all models (policies, critics, target models if available) together with their corresponding optimizer and LR scheduler. states. It also saves the state of the replay buffer, to allow for smooth restarts of reinforcement learning training processes. This function should be used in conjunction with
torchfort_rl_off_policy_load_checkpoint
.- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
checkpoint_dir [character(:),in] :: A filesystem path to a directory to save the checkpoint data to.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_load_checkpoint¶
- function torchfort_rl_off_policy_load_checkpoint(name, checkpoint_dir)¶
Restores a reinforcement learning system from a checkpoint. This method restores all models (policies, critics, target models if available) together with their corresponding optimizer and LR scheduler states. It also fully restores the state of the replay buffer, but not the current RNG seed. This function should be used in conjunction with
torchfort_rl_off_policy_save_checkpoint
.- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
checkpoint_dir [character(:),in] :: A filesystem path to a directory which contains the checkpoint data to load.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Weights and Biases Logging¶
torchfort_rl_off_policy_wandb_log_int¶
- function torchfort_rl_off_policy_wandb_log_int(mname, metric_name, step, val)¶
Write an integer value to a Weights and Bias log. Use the
_float
and_double
variants to writereal32
andreal64
values respectively.- Parameters
mname [character(:),in] :: The name of model instance to associate this metric value with, as defined during model creation.
metric_name [character(:),in] :: Metric label.
step [integer,in] :: Training/inference step to associate with metric value.
val [integer,in] :: Metric value to log.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_off_policy_wandb_log_float¶
- function torchfort_rl_off_policy_wandb_log_float(mname, metric_name, step, val)¶
torchfort_rl_off_policy_wandb_log_double¶
- function torchfort_rl_off_policy_wandb_log_double(mname, metric_name, step, val)¶
On-Policy Algorithms¶
System Creation¶
Basic routines to create and register a reinforcement learning system in the internal registry. A (synchronous) data parallel distributed option is available.
torchfort_rl_on_policy_create_system¶
- function torchfort_rl_on_policy_create_system(name, config_fname, model_device, rb_device)¶
Creates an on-policy reinforcement learning training system instance from a provided configuration file.
- Parameters
name [character(:),in] :: A name to assign to the created training system instance to use as a key for other TorchFort routines.
config_fname [character(:),in] :: The filesystem path to the user-defined configuration file to use.
model_device [integer,in] :: Which device to place and run the model on. For
TORCHFORT_DEVICE_CPU
(-1), model will be placed on CPU. For values >= 0, model will be placed on GPU with index corresponding to value.rb_device [integer,in] :: Which device to place the rollout buffer on. For
TORCHFORT_DEVICE_CPU
(-1), rollout buffer will be placed on CPU. For values >= 0, it will be placed on GPU with index corresponding to value.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_create_distributed_system¶
- function torchfort_rl_on_policy_create_distributed_system(name, config_fname, mpi_comm, model_device, rb_device)¶
Creates a (synchronous) data-parallel on-policy reinforcement learning system instance from a provided configuration file.
- Parameters
name [character(:),in] :: A name to assign to the created training system instance to use as a key for other TorchFort routines.
config_fname [character(:),in] :: The filesystem path to the user-defined configuration file to use.
mpi_comm [integer,in] :: MPI communicator to use to initialize NCCL communication library for data-parallel communication.
model_device [integer,in] :: Which device to place and run the model on. For
TORCHFORT_DEVICE_CPU
(-1), model will be placed on CPU. For values >= 0, model will be placed on GPU with index corresponding to value.rb_device [integer,in] :: Which device to place the rollout buffer on. For
TORCHFORT_DEVICE_CPU
(-1), rollout buffer will be placed on CPU. For values >= 0, it will be placed on GPU with index corresponding to value.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Training/Evaluation¶
These routines are be used for training the reinforcement learning system or for steering the environment.
torchfort_rl_on_policy_train_step¶
- function torchfort_rl_on_policy_train_step(name, p_loss_val, q_loss_val, stream)¶
Runs a training iteration of an on-policy refinforcement learning instance and returns loss values for policy and value functions. This routine samples a batch of specified size from the rollout buffer according to the buffers sampling procedure and performs a train step using this sample. The details of the training procedure are abstracted away from the user and depend on the chosen system algorithm. Note that the rollout buffer needs to be finalized or otherwise the train step will be skipped. For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
p_loss_val [T,out] :: A single or double precision variable which will hold the policy loss value computed during the training iteration.
q_loss_val [T,out] :: A single or double precision variable which will hold the critic loss value computed during the training iteration, averaged over all available critics (depends on the chosen algorithm).
stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_predict_explore¶
- function torchfort_rl_on_policy_predict_explore(name, state, act, stream)¶
Suggests an action based on the current state of the system and adds noise as specified by the coprresponding reinforcement learning system. Depending on the reinforcement learning algorithm used, the prediction is performed by the main network (not the target network). In contrast to
torchfort_rl_off_policy_predict
, this routine adds noise and thus is called explorative. The kind of noise is specified during system creation.For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the state space.act [T,out] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the action space.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_predict¶
- function torchfort_rl_on_policy_predict(name, state, act, stream)¶
Suggests an action based on the current state of the system. Depending on the algorithm used, the prediction is performed by the target network. In contrast to
torchfort_rl_on_policy_predict_explore
, this routine does not add noise, which means it is exploitative.For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the state space.act [T,out] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the action space.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_evaluate¶
- function torchfort_rl_on_policy_evaluate(name, state, act, reward, stream)¶
Predicts the future reward based on the current state and selected action. Depending on the learning algorithm, the routine queries the target critic networks for this. The routine averages the predictions over all critics.
For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the state space.act [T,in] :: Multi-dimensional array of size (…,
batch_size
), depending on the dimensionality of the action space.reward [T,out] :: Two-dimensional array of size (1,
batch_size
) which will hold the predicted reward values.stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
System Management¶
torchfort_rl_on_policy_update_rollout_buffer¶
- function torchfort_rl_on_policy_update_rollout_buffer(name, state_old, act_old, state_new, reward, terminal, stream)¶
Adds a new \((s, a, r, d)\) tuple to the rollout buffer. Here \(s\) (
state
) is the state for which action \(a\) (action
) was taken, leading to reward \(r\) (reward
). The terminal state flag \(d\) (terminal
) specifies whether the state is the final state in the episode. Note that value estimates \(q\) as well was log-probabilities are also stored but the user does not need to pass those manually, , those values are computed internally from the current policy and stored with the other values.For this operation,
T
can be one ofreal(real32)
,real(real64)
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
state [T,in] :: Multi-dimensional array of size of the state space.
act [T,in] :: Multi-dimensional array of size of the action space.
reward [T,in] :: Reward value.
terminal [logical,in] :: Terminal flag.
stream [integer(int64),in,optional] :: CUDA stream to enqueue the operation. This argument is ignored if the model is on the CPU.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_reset_rollout_buffer¶
- function torchfort_rl_on_policy_reset_rollout_buffer(name)¶
This function call clears the rollout buffer and resets all variables.
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_is_ready¶
- function torchfort_rl_on_policy_is_ready(name, ready)¶
Queries a reinforcement learning system for rediness to start training. A user should call this method before starting training to make sure the reinforcement learning system is ready. This ensures that the rollout buffer is filled sufficiently with exploration data as specified during system creation. It also checks if the rollout buffer was properly finalized, e.g. all advantages were computed.
- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
ready [logical,out] :: Logical indicating if the system is ready for training.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_save_checkpoint¶
- function torchfort_rl_on_policy_save_checkpoint(name, checkpoint_dir)¶
Saves a reinforcement learning training checkpoint to a directory. This method saves all models (policies, critics, target models if available) together with their corresponding optimizer and LR scheduler. states. It also saves the state of the rollout buffer, to allow for smooth restarts of reinforcement learning training processes. This function should be used in conjunction with
torchfort_rl_on_policy_load_checkpoint
.- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
checkpoint_dir [character(:),in] :: A filesystem path to a directory to save the checkpoint data to.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_load_checkpoint¶
- function torchfort_rl_on_policy_load_checkpoint(name, checkpoint_dir)¶
Restores a reinforcement learning system from a checkpoint. This method restores all models (policies, critics, target models if available) together with their corresponding optimizer and LR scheduler states. It also fully restores the state of the rollout buffer, but not the current RNG seed. This function should be used in conjunction with
torchfort_rl_on_policy_save_checkpoint
.- Parameters
name [character(:),in] :: The name of system instance to use, as defined during system creation.
checkpoint_dir [character(:),in] :: A filesystem path to a directory which contains the checkpoint data to load.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
Weights and Biases Logging¶
torchfort_rl_on_policy_wandb_log_int¶
- function torchfort_rl_on_policy_wandb_log_int(mname, metric_name, step, val)¶
Write an integer value to a Weights and Bias log. Use the
_float
and_double
variants to writereal32
andreal64
values respectively.- Parameters
mname [character(:),in] :: The name of model instance to associate this metric value with, as defined during model creation.
metric_name [character(:),in] :: Metric label.
step [integer,in] :: Training/inference step to associate with metric value.
val [integer,in] :: Metric value to log.
- Return
res [torchfort_result] ::
TORCHFORT_RESULT_SUCCESS
on success or error code on failure.
torchfort_rl_on_policy_wandb_log_float¶
- function torchfort_rl_on_policy_wandb_log_float(mname, metric_name, step, val)¶
torchfort_rl_on_policy_wandb_log_double¶
- function torchfort_rl_on_policy_wandb_log_double(mname, metric_name, step, val)¶